我在更新实体时面临一个问题,其中一些字段从原始实体更新。代码如下所示
public int SaveUser(UserDetail objUserDet)
{
DBEntities context = new DBEntities();
UserDetail userDetail = (from u in context.UserDetails.Where(u => u.UserDetID == objUserDet.UserDetID)
select u).Single();
objUserDet.UserId = userDetail.UserId;
//context.UserDetails.ApplyCurrentValues(objUserDet); //For ObjectContext works fine.
context.UserDetails.Attach(objUserDet);
context.Entry(objUserDet).State = EntityState.Modified;
context.SaveChanges();
}
但它给我一个像
这样的错误附加类型的实体失败,因为同一类型的另一个实体已具有相同的主键值。
如何使用相同的主键更新一个实体与另一个实体。
答案 0 :(得分:1)
我99%确定错误是由于内存中的两个附加对象具有相同的主键。所以,你应该:
userDetail
或objUserDet
并将更改后的值转移到userDetail
对象。您也可以在userDetail
之前分离SaveChanges
对象。