所以我试图阻止应用程序之间的竞争条件。
使用IsolationLevel / TransactionScope,我可以按照我需要的方式锁定表,但需要先运行更新操作,然后对修改后的对象列表进行操作。
为此,我需要运行更新并一次性获取更新ID的列表。
如果我首先尝试获取ID,那么就不会锁定表,而另一个应用实例可能会在标记之前查询相同的列表。
有没有办法做类似的事情:
//modify some objects
var updatedIds = context.SaveChanges();
//Process updatedIds
有办法做到这一点吗?我已经尝试查看ObjectContext条目,但在Save之后似乎没有任何东西。
也许我不得不做一个特色菜?
答案 0 :(得分: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;
}
}