Ignore duplicate key insert with Entity Framework

后端 未结 5 471
遇见更好的自我
遇见更好的自我 2020-12-29 03:36

I\'m using ASP.NET MVC4 with Entity Framework Code First. I have a table called \"users\", with primary key \"UserId\". This table may have 200,000+ entries.

I need

5条回答
  •  梦毁少年i
    2020-12-29 04:24

    You can do this:

    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();
    

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

提交回复
热议问题