Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Entity framework 使用自己的插入、更新和删除功能时,EF有什么不同?_Entity Framework_Entity Framework 4 - Fatal编程技术网

Entity framework 使用自己的插入、更新和删除功能时,EF有什么不同?

Entity framework 使用自己的插入、更新和删除功能时,EF有什么不同?,entity-framework,entity-framework-4,Entity Framework,Entity Framework 4,我正在研究向数据库中添加历史记录表。最简单的方法是拦截EF发出的所有Insert、Update和Delete调用,并将其添加到合并中,该合并还将向历史记录表中插入历史记录行 现在我所有的实体都让EF知道如何进行插入、更新和删除 如果我去添加存储过程(而不是EF生成的东西),EF在业务层的功能是否仍然相同 或者它改变了我与实体的合作方式?如果是这样,怎么办?一切都是一样的,它是透明的 存储过程需要返回受影响的行,以便EF知道更新是否成功。此外,如果执行更新并需要将任何属性映射回实体(例如时间戳),

我正在研究向数据库中添加历史记录表。最简单的方法是拦截EF发出的所有Insert、Update和Delete调用,并将其添加到合并中,该合并还将向历史记录表中插入历史记录行

现在我所有的实体都让EF知道如何进行插入、更新和删除

如果我去添加存储过程(而不是EF生成的东西),EF在业务层的功能是否仍然相同


或者它改变了我与实体的合作方式?如果是这样,怎么办?

一切都是一样的,它是透明的

存储过程需要返回受影响的行,以便EF知道更新是否成功。此外,如果执行更新并需要将任何属性映射回实体(例如时间戳),则必须在存储过程中选择它们,然后在EF设计器中映射回它们(因为您只能有一个输出参数,而这应该是受影响的行)


你可以考虑使用DB上的触发器来解决你的问题吗?

< P>在存储过程中这样做意味着你将编写所有的插入、更新和删除自己。这就像扔掉30%的功能集(和50%的生产率)。在应用程序中创建审核记录,并通过EF将其与主记录一起保存。

谢谢您的回答。触发器在我的公司有一个非常负面的污名。由于我仍在开发中,我认为sproc解决方案会很好地工作。