且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

忽略实体框架重复键插入

更新时间:2023-01-22 17:28:38

您可以这样做:

var newUserIDs = NewUsers.Select(u => u.UserId).Distinct().ToArray();
var usersInDb = dbcontext.Users.Where(u => newUserIDs.Contains(u.UserId))
                               .Select(u => u.UserId).ToArray();
var usersNotInDb = NewUsers.Where(u => !usersInDb.Contains(u.UserId));
foreach(User user in usersNotInDb){
    context.Add(user);
}

dbcontext.SaveChanges();

这将执行在数据库中单个查询要找到已经存在的用户,然后筛选出来的你的 newusers使用设置。

This will execute a single query in your database to find users which already exist, then filter them out of your NewUsers set.