我正在尝试更新Tag表中的标签列表,如下所示:
List<Tag> tagList = GetUnitTagList(unitId);
foreach (Tag tag in tagList)
{
tag.count = tag.count - 1;
}
db.SubmitChanges();
这里是GetUnitTagList()方法:
public static List<Tag> GetUnitTagList(int unitId)
{
DataClassesDataContext db = new DataClassesDataContext();
var tags = from x in db.UnitTags where x.UnitID == unitId select x.Tag;
return tags.ToList();
}
但是我想要更新的价值没有得到更新。
但是,以下代码可以正常工作:
var tags = from x in db.UnitTags where x.UnitID == unitId select x.Tag;
foreach (Tag tag in tags)
{
tag.count = tag.count - 1;
}
db.SubmitChanges();
看起来如果我得到Tag对象的集合,我们返回一个方法然后我无法更新记录。我尝试调试,没有异常!
那么,为什么第一种更新记录的方式不起作用,而第二种方式它没有问题呢?
答案 0 :(得分:5)
您正在从一个dbContext更新实体(在GetUnitTagList
中创建)并在另一个上调用SubmitChanges
(在您未向我们展示的地方创建)。
在你的上一个例子中,dbcontext显然是同一个。