我正在使用实体框架和 C# 开发 Web API。我需要脏读的解决方案。
我试过下面的方法和事务方法,我需要脏读的解决方案。
脏读或幻读是用户没有更新最新数据的现象。
假设用户 A 打开了推销员网页
用户B也打开了同一个推销员网页
A 已加载推销员 ID 1001,B 也加载 1001 A 将推销员名称更改为 X 并保存。
但是 B 看到的是旧数据,如果 B 将推销员姓名更改为 Y,A 的更改将被覆盖。所以我们应该阻止 B 将更改写入 DB。
所以我需要基于上述概念的解决方案。
using (var transaction = db.Database.BeginTransaction())
{
try
{
db.SaveChanges();
transaction.Commit();
}
catch (Exception excp)
{
throw excp;
}
}
return Ok();
以下是我尝试过的代码
using (var transaction = db.Database.BeginTransaction())
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
KSTU_COUNTER_MASTER kcm = new KSTU_COUNTER_MASTER();
kcm.obj_id = Common.GetNewGUID();
kcm.company_code = Common.CompanyCode;
kcm.branch_code = Common.BranchCode;
kcm.counter_code = c.CounterCode;
kcm.counter_name = c.CounterName;
kcm.Maincounter_code = c.MaincounterCode;
kcm.obj_status = c.ObjectStatus;
kcm.UpdateOn = Framework.Common.GetDateTime();
kcm.UniqRowID = Guid.NewGuid();
db.KSTU_COUNTER_MASTER.Add(kcm);
try
{
db.SaveChanges();
transaction.Commit();
}
catch (Exception excp)
{
throw excp;
}
}
return Ok();