C# LinqToEntity立即更新同一记录

C# LinqToEntity立即更新同一记录,c#,wcf,linq-to-entities,C#,Wcf,Linq To Entities,我正在使用LinqToEntity来减少库存量。 这可以被多个客户端同时称为乘法 当我使用ExecuteSqlCommand(Query)时,实际结果是ok的。 我试图用2个客户端程序同时运行下面的代码 for (int i = 0; i < 1000; i++) { var q1 = Database.ExecuteSqlCommand("update InventoryContainer set QuantityCurrent = QuantityCurrent - {1},

我正在使用LinqToEntity来减少库存量。 这可以被多个客户端同时称为乘法

当我使用ExecuteSqlCommand(Query)时,实际结果是ok的。 我试图用2个客户端程序同时运行下面的代码

for (int i = 0; i < 1000; i++)
{
    var q1 = Database.ExecuteSqlCommand("update InventoryContainer set QuantityCurrent = QuantityCurrent - {1}, where RawID = {0}", 1, 1);
    Thread.Sleep(50);
}

Original : 0
ExpectedResult : -2000
ActualResult : -2000
for(int i=0;i<1000;i++)
{
var q1=Database.ExecuteSqlCommand(“更新InventoryContainer集QuantityCurrent=QuantityCurrent-{1},其中RawID={0}”,1,1);
睡眠(50);
}
原件:0
预期结果:-2000
实际结果:-2000
但当我使用LinqToEntity和SaveChanges()并同时运行两个客户机程序时,实际结果是非常不同的

for (int i = 0; i < 1000; i++)
{
    var ic = InventoryContainer.FirstOrDefault(p => p.RawID == 1);
    ic.QuantityCurrent -= 1;
    Thread.Sleep(50);
    SaveChanges();
}

Original : 0
ExpectedResult : -2000
ActualResult : -1032
for(int i=0;i<1000;i++)
{
var ic=InventoryContainer.FirstOrDefault(p=>p.RawID==1);
ic.数量电流-=1;
睡眠(50);
保存更改();
}
原件:0
预期结果:-2000
实际结果:-1032

我需要使用LinqToEntity运行此操作,因为很多数据处理都是使用LinqToEntity执行的,并且希望在事务中只调用SaveChanges()一次。

一次调用两个客户端是什么意思?两台PC(客户端)是否同时对数据库执行了这些源代码?是否考虑了并发问题的可能性?是的,但它会引发异常,但我希望像查询一样执行,而不是异常