エンティティUser
プライマリキーのプロパティがUCO
のエンティティがあります。Entity Frameworkの入力リストからDBに既存のエンティティを追加しないでください
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'、またはその両方? –
既存ユーザーは潜在的に大きい – MacakM