在这段代码中,我更改了Table1
的IsMale
字段和Table2
的Name
字段。
应用Table1
中的更改,但不应用Table2
中的更改。context.SaveChanges()
返回2
,但数据库中的Table2
未更新,请帮助我。
using (var context = new ctxdB())
{
var tbl1 = context.Table1.FirstOrDefault(c => c.Token == token);
var tbl2 = context.Table2.Find(id);
tbl1.IsMale = true;
tbl2.Name = "New name";
context.Entry(tbl1).State = EntityState.Modified;
context.Entry(tbl2).State = EntityState.Modified;
context.SaveChanges();
}
发布于 2017-09-21 20:22:42
如果你看一下这里的条目:
https://msdn.microsoft.com/en-us/library/gg696418(v=vs.113).aspx
上面写着
“查找具有给定主键值的实体。如果上下文中存在具有给定主键值的实体,则立即返回该实体,而不向存储区发出请求。否则,向存储区请求具有给定主键值的实体,如果找到该实体,则将该实体附加到上下文并返回。”
这告诉我它可能返回一个未连接的实体。您可以尝试从Context.Table2
调用该实体上的Attach()
方法。
context.Table2.Attach(tbl2);
有没有什么原因你没有在那个实体集上使用FirstOrDefault()
?这将生成一个查询并将模型附加到实体集。
https://stackoverflow.com/questions/46352520
复制相似问题