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

发布于 2024-11-07 02:15:28 字数 104 浏览 0 评论 0原文

我想知道是否可以重写 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦中楼上月下 2024-11-14 02:15:28

一般来说,如果您覆盖 SaveChanges 并且不调用 base.SaveChanges,您可以做任何您想做的事情,但您将失去 EF 将为您做的所有事情。这意味着您必须手动浏览元数据并将实体映射到 SQL 表和列。大概有一半的 ORM 是你自己写的。

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

Generally you can do anything you want if you override SaveChanges and do not call base.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.

深府石板幽径 2024-11-14 02:15:28

在 EF4 中,SaveChanges(SaveOptions) 是虚拟的。您可以重写此方法。 MSDN

In EF4 SaveChanges(SaveOptions) is virtual. You can override this method. MSDN

忆沫 2024-11-14 02:15:28

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

另一种方法是编写包装提供程序

@Ladislav is correct that a stored proc is one way to do this (+1).

Another way is to write a wrapper provider.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文