我有一个网络服务,通过AJAX提供信息,然后我的服务根据他们改变的内容更新当前用户的数据
我的问题是,当我根据以下消息致电SaveChanges
时,我的实体不断抛出异常;
EntityFramework.dll中发生了'System.Data.Entity.Infrastructure.DbUpdateConcurrencyException'类型的异常,但未在用户代码中处理
其他信息:存储更新,插入或删除语句会影响意外的行数(0)。自实体加载后,实体可能已被修改或删除。有关理解和处理乐观并发异常的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=472540。
我已启用乐观并发,我最初还认为这不是设置经销商ID,这是我的数据库的主键,但是经销商ID很好,所以我看不出我出错的地方。
我已经能够更新用户信息而不首先显示信息,所以我认为这个问题与使用相同的实体显示数据以及更新数据有关,但我不太确定
我的代码在下面,
class Dashboards
{
//this is my EF Model
dealer DealerObj = new dealer();
public void UpdateDealerInfo(string UserName, DealerInfoViewModel model)
{
using (var context = new VatsWebDealerEntity())
{
var UserInfo = context.dealers.AsNoTracking().Where(m => m.Name == UserName).Select(m => m).ToArray();
var UserID = context.dealers.AsNoTracking().Where(m => m.Name == UserName).Select(m => m.DealerID).FirstOrDefault();
//DealerObj.DealerID = UserID;
foreach (var item in UserInfo)
{
if (item.Name != model.NewValue)
{
DealerObj.Name = model.NewValue;
}
else if (item.Address1 != model.NewValue)
{
DealerObj.Address1 = model.NewValue;
}
else if (item.Address2 != model.NewValue)
{
DealerObj.Address2 = model.NewValue;
}
else if (item.Address3 != model.NewValue)
{
DealerObj.Address3 = model.NewValue;
}
else if (item.PostCode != model.NewValue)
{
DealerObj.PostCode = model.NewValue;
}
else if (item.Town != model.NewValue)
{
DealerObj.Town = model.NewValue;
}
//else if (item.CountryID != model.NewValue)
//{
// DealerObj.country = model.NewValue;
//}
else if (item.ContactName != model.NewValue)
{
DealerObj.ContactName = model.NewValue;
}
else if (item.ContactTelephone != model.NewValue)
{
DealerObj.ContactTelephone = model.NewValue;
}
else if (item.Phone != model.NewValue)
{
DealerObj.Phone = model.NewValue;
}
DealerObj.DealerID = UserID;
DealerObj.CountryID = 1;
var entry = context.Entry(DealerObj);
context.dealers.Attach(DealerObj);
//context.Entry(DealerObj).Property(e => e.DealerID).IsModified = false;
context.Entry(DealerObj).State = System.Data.Entity.EntityState.Modified;
//entry.State = System.Data.Entity.EntityState.Modified;
context.SaveChanges();
}
}
}
}
答案 0 :(得分:0)
我还没有对其进行测试,但请在context.SaveChanges()
循环之外试用foreach