是否可以重写实体框架中的 ObjectContext.SaveChanges 方法?
我想知道是否可以重写 ObjectContext.SaveChanges() 方法并编写我们自己的 sql 逻辑来保存对对象上下文中的实体所做的更改,而不是依赖实体框架将这些更改保存在数据库中。
I was wondering if it is possible to override the ObjectContext.SaveChanges() method and write our own sql logic to save the changes made to the entities in the object context instead of relying on Entity Framework to save those changes in the database.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
一般来说,如果您覆盖
SaveChanges
并且不调用base.SaveChanges
,您可以做任何您想做的事情,但您将失去 EF 将为您做的所有事情。这意味着您必须手动浏览元数据并将实体映射到 SQL 表和列。大概有一半的 ORM 是你自己写的。如果您在持久化实体时只需要一些自定义逻辑,则可以将导入的存储过程映射到实体设计器中的插入、更新和删除操作。
Generally you can do anything you want if you override
SaveChanges
and do not callbase.SaveChanges
but you will loose all the stuf EF will do for you. It means you will have to manually browse metadata and map your entities to SQL tables and columns. There will be like writing half the ORM yourselves.If you just need some little custom logic when persisting entity you can map imported stored procedure to Insert, Update and Delete operations in the entity designer.
在 EF4 中,
SaveChanges(SaveOptions)
是虚拟的。您可以重写此方法。 MSDNIn EF4
SaveChanges(SaveOptions)
is virtual. You can override this method. MSDN@Ladislav 是正确的,存储过程是执行此操作的一种方法(+1)。
另一种方法是编写包装提供程序。
@Ladislav is correct that a stored proc is one way to do this (+1).
Another way is to write a wrapper provider.