【问题标题】:Intercepting context.SaveChanges() in MVC 3 so that I can modify and use a custom sql query instead在 MVC 3 中拦截 context.SaveChanges() 以便我可以修改和使用自定义 sql 查询
【发布时间】:2011-08-18 15:17:37
【问题描述】:

我正在开发一个 MVC3 项目,其模型是使用 Code First 方法设计的。我正在将 EF4 用于 ORM,并且需要两件事 - 1.拦截context.SaveChages方法 2.仅针对一种特定实体类型进行我自己的自定义更新查询。

我通过重写 SaveChanges() 方法得到了第一部分的工作 -

    public  override  int SaveChanges()
    { 
var modifiedItems = this.ChangeTracker.Entries().Where(e => e.State == System.Data.EntityState.Modified && e.Entity is myEntityName);
        foreach (var item in modifiedItems)
        {
           //ToDo: Write UPDATE Sql Query here
        }

        return base.SaveChanges();
}

如何编写更新查询? 谢谢!

【问题讨论】:

  • 您想如何编写更新查询?作为 SQL?使用不同的 ORM?无论您如何操作,请确保在保存更改之前从上下文中清除 的修改项,否则上下文将覆盖您所做的任何事情。

标签: asp.net-mvc-3 entity-framework-4 ef-code-first


【解决方案1】:

这是不可能的。您只能使用 map custom stored procedures 代替 EF 生成的 CUD 操作(仅适用于 EDMX),但每个操作和实体实例仍然有单个存储过程调用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-24
    • 1970-01-01
    • 2018-06-05
    相关资源
    最近更新 更多