【问题标题】:Get list of modified objects after Entity Framework Update获取实体框架更新后修改对象的列表
【发布时间】:2013-02-18 14:10:39
【问题描述】:

所以我试图防止应用程序之间出现竞争条件。

使用IsolationLevel/TransactionScope,我可以按我需要的方式锁定表,但需要先运行更新操作,然后对修改的对象列表进行操作。

为此,我需要运行更新并一次性获取更新后的 ID 列表。

如果我先尝试获取 ID,则不会锁定表,并且另一个应用程序实例可以在它们被标记之前查询相同的列表。

有没有办法做类似的事情:

//modify some objects    
var updatedIds = context.SaveChanges();
//Process updatedIds

有没有办法做到这一点?我试过查看 ObjectContext 条目,但在 Save 之后似乎什么都没有。

也许我必须做一个 sproc?

【问题讨论】:

标签: sql-server entity-framework


【解决方案1】:

此代码可以进入您的 Context 类,并应为您提供所需的内容

public override int SaveChanges()
{
    using (var scope = new System.Transactions.TransactionScope())
    {
        //pre processing
        var result = base.SaveChanges();
        //post processing
        scope.Complete();
        return result;
    }
}

【讨论】:

  • 我最终编写了一个 SP,它使用 OUTPUT 更新行并返回 ID,加上这里写的事务范围。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多