【发布时间】:2017-09-21 20:17:28
【问题描述】:
在这段代码中,我更改了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();
}
【问题讨论】:
-
table2 上的
Find找到什么了吗? -
@Locke125,当然可以。
-
顺便说一句,在您使用 FirstOrDefault() 检索的实体上,您不必手动设置实体状态。
-
EF 上下文自动跟踪对象,以便知道哪个被修改。所以我认为你真的不需要将 State 设置为 EntityState.Modified。 SaveChanges() 方法还有一个整数返回值,它指示在保存期间有多少行受到影响。返回值是多少?
-
@Major context.SaveChanges() 返回 2 但
Table2未在数据库中更新。
标签: c# asp.net sql-server asp.net-mvc entity-framework