我向对象添加了一个新列,并使用 EF 从数据库更新模型。
通常我们会执行以下操作:
context.BulkInsert(records, GetBulkInsertOptions());
context.SaveChanges();
但这似乎不适用于新列。如果我执行以下操作,它会起作用,但显然并不理想。
foreach (var r in records)
{
context.MyDBObject.Add(r);
context.Entry(r).State = EntityState.Modified;
context.SaveChanges();
}
有人可以对此有所了解吗?此外,如果我在保存之前删除数据库中的行,它将插入所有内容,除了我添加的新列。
编辑:使用实体框架 v6.2.0 和 EntityFramework.BulkInsert v6.0.3.8
编辑 2:如果我删除该行,并尝试仅使用以下内容插入一个新对象
context.MyTable.Add(test);
context.SaveChanges()
这也会插入对象,但不包括我的新列。这让我相信它更多是 EF 的错误,而不是我之前提到的 BulkInsert 的错误。
答案 0 :(得分:1)
问题是由 Mssql 表中的触发器引起的。
Doing context.Database.Log = Console.WriteLine;
帮助我们确定实体框架正在向 SQL 发送正确的查询。在 SQL 中测试查询显示未保存新列。