实体框架自动确定是更新还是创建实体

Entity Framework auto-determination whether to update or create entity

提问人:Doe 提问时间:1/5/2018 更新时间:1/6/2018 访问量:32

问:

我是 EF 的新手。 在互联网上搜索了几个小时后,我想在这里提出我的问题。

EF 中是否真的没有内置机制来确定是更新还是创建实体?

假设我有一个 POCO 对象列表,并希望将它们保存到数据库中。

现在我真的必须通过上下文区分实体是否已经存在(更新)或不存在(插入)。添加并在处理之前必须进行查找?

我预计,当主键字段为 null 或为空时,EF 将自动执行插入,否则会进行更新?

实体框架 orm crud

评论

1赞 Ivan Stoev 1/6/2018
简短的回答 - 不。您有责任告诉 EF 该怎么做。

答:

1赞 dropoutcoder 1/6/2018 #1

伊万斯托耶夫在他的评论中提到,简短的回答是

不。您有责任告诉 EF 该怎么做。

但是您可以使用一个技巧。 命名空间中的扩展方法。AddOdUpdateSystem.Data.Entity.Migrations

无论如何,我确实认为在您的情况下使用它不是一个好主意。你应该控制你在代码中所做的事情,每次你试图破解某些东西时,都意味着你没有正确地做。我建议您阅读附件链接。

相关链接:

AddOrUpdate 方法

实体框架:AddOrUpdate 是一种破坏性操作

评论

0赞 Ivan Stoev 1/6/2018
另一点反对是它不能很好地与导航属性一起使用。我从不使用它,也不建议将它用于简单的实体播种以外的任何事情。通过应用断开连接的实体修改来解决该问题的唯一尝试是第三方包 GraphDiffAddOrUpdate