使用自己的插入,更新和删除功能时,EF有什么区别?

时间:2012-01-20 18:19:14

标签: entity-framework entity-framework-4

我正在考虑将历史表添加到我的数据库中。最简单的方法是拦截EF制作的所有Insert,Update和Delete调用,并在合并中添加,该合并也会将历史行插入到历史记录表中。

现在我的所有实体都让EF弄清楚如何进行插入,更新和删除。

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

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

2 个答案:

答案 0 :(得分:1)

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

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

您可以考虑在数据库上使用触发器来解决您的问题吗?

答案 1 :(得分:0)

在存储过程中执行此操作意味着您将自己编写所有插入,更新和删除。这就像抛出30%的功能集(和50%的生产力)。在您的应用程序中创建审核记录,并通过EF将它们与主记录一起保存。