是否可以覆盖实体框架中的ObjectContext.SaveChanges方法?

时间:2011-05-12 09:02:46

标签: entity-framework

我想知道是否可以覆盖ObjectContext.SaveChanges()方法并编写我们自己的sql逻辑来保存对对象上下文中的实体所做的更改,而不是依靠Entity Framework将这些更改保存在数据库中

3 个答案:

答案 0 :(得分:2)

一般来说,如果你覆盖SaveChanges并且不打电话给base.SaveChanges,你可以做任何你想要的事情,但是你将失去EF为你做的所有麻烦。这意味着您必须手动浏览元数据并将实体映射到SQL表和列。就像写一半ORM一样。

如果在持久化实体时只需要一些小的自定义逻辑,则可以将导入的存储过程映射到实体设计器中的“插入”,“更新”和“删除”操作。

答案 1 :(得分:1)

在EF4中SaveChanges(SaveOptions)是虚拟的。您可以覆盖此方法。 MSDN

答案 2 :(得分:0)

@Ladislav是正确的,存储过程是一种方法(+1)。

另一种方法是写一个wrapper provider