0

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

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

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

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

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

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

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

也许我必须做一个sproc?

4

1 回答 1

0

这段代码可以进入你的 Context 类,应该给你你需要的东西

public override int SaveChanges()
{
    using (var scope = new System.Transactions.TransactionScope())
    {
        //pre processing
        var result = base.SaveChanges();
        //post processing
        scope.Complete();
        return result;
    }
}
于 2013-02-18T15:15:11.663 回答