1 回答
TA贡献1943条经验 获得超7个赞
您正在从一个上下文中检索实体,然后调用SaveChanges()不同的上下文。如果您内联该方法,它将变得更加清晰:
var userToChange;
using (var context = new ShopContext())
{
userToChange = context.UsersTable.Where((u) => u.Id == userId).FirstOrDefault();
}
using (var context = new ShopContext())
{
if (userToChange != null)
{
if (isUserActive)
{
userToChange.IsActive = false;
context.SaveChanges();
}
else
{
userToChange.IsActive = true;
context.SaveChanges();
}
return true;
}
return false;
}
第二个上下文对 userToChange 一无所知,因为它没有跟踪它。你可以告诉它:
context.UsersTable.Attach(userToChange);
顺便说一句,那里有一些冗余代码 - 一个 if 语句,可以简化为 true 或 false 分配布尔值:
if (isUserActive)
userToChange.IsActive = false;
else
userToChange.IsActive = true;
// Equivalent to:
userToChange.IsActive = !isUserActive;
并且不需要空检查:
if (userToFind != null)
return userToFind;
else
return null;
// Equivalent to:
return userToFind;
- 1 回答
- 0 关注
- 390 浏览
添加回答
举报