【发布时间】:2016-12-25 13:58:59
【问题描述】:
我有一个实体User,主键属性为UCO。
我想编写一个方法AddUsers,将给定列表中的所有用户添加到数据库中。问题是当管理员尝试添加一个已经存在于数据库中的用户的列表时,会引发异常。
我只添加不在数据库中的用户的解决方案在这里:
public void AddUsers(List<UserDTO> users)
{
using (var db = new AppDbContext())
{
var existingUsers = Mapper.Map<List<UserDTO>>(db.Users.ToList());
db.Users.AddRange(
Mapper.Map<List<User>>(users
.Where(user => !existingUsers
.Select(u => u.UCO)
.Contains(user.UCO))));
db.SaveChanges();
}
}
请问有没有更有效的解决办法。如果我有 10'000 个用户,那么这将非常慢......
谢谢你的回答:)
【问题讨论】:
-
哪个列表可能很大 -
existingUsers、users或两者兼而有之? -
existingUsers 可能很大
标签: c# entity-framework