C# EF Code First 数据填充 - 保持不断添加(而非更新)

4

我有一个类型为User的列表,当我尝试将我的数据库更新反映到这个列表上时,它只是再次添加所有条目。我将分享我在Seed()方法中执行的代码。如果记录已经存在,我希望只更新它们(但保留添加功能)。你有什么想法吗?

List<User> users = new List<User>();

users.Add(new User { FirstName = "Dee", LastName = "Reynolds" });
users.Add(new User { FirstName = "Rickety", LastName = "Cricket" });

users.ForEach(b => context.Users.AddOrUpdate(b));

1
这不起作用是因为 EF 在比较某些字段(可能是id)时,您没有填充。如果您已经知道它们存在,可以尝试使用.Attach(b) - crthompson
我无法在当前结构中为b实现另一种含义。这是与提供的问题略有不同的情况。 - scniro
可能我不知道对象是否存在。如果存在,我希望进行编辑;如果不存在,我希望添加。 - scniro
这是一个经常被问到的问题。https://dev59.com/FHTYa4cB1Zd3GeqPwZfS#17719137。请注意...http://thedatafarm.com/blog/data-access/take-care-with-ef-4-3-addorupdate-method/ - Colin
2个回答

7
您只需在添加/更新记录时指定要检查的关键字。因此,对于新用户,您将执行以下操作:
context.Users.AddOrUpdate(x => x.UserName, //Or some other field that you know will be consistant
    new User { FirstName = "Dee", LastName = "Reynolds" }
);

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接