鉴于以下课程......
public class BaseClass
{
[Key]
public int ID { get; set; }
public DateTime LastUpdatedDate { get; set; }
}
public class InheritedClass : BaseClass
{
public string RandomValue { get; set; }
}
...使用EF6中的TPT继承策略分别映射到SQL表tblBaseClass和tblInheritedClass。
当我使用以下代码创建记录时......
var newClass = new InheritedClass {
RandomValue = "Some Random Text",
LastUpdatedDate = DateTime.Now
};
dbContext.InheritedClasses.Add(newClass);
dbContext.SaveChanges();
...首先将数据插入tblBaseClass,然后插入tblInheritedClass。但是,当我使用...
类似地更新记录时var existingClass = dbContext.InheritedClasses.Find(someKeyValue);
existingClass.LastUpdatedDate = DateTime.Now;
existingClass.RandomValue = "Some Different Random Text";
dbContext.SaveChanges();
表以相反的顺序更新(具体来说,更新了tblInheritedClass,然后更新了tblBaseClass)。
问题
如何指定我希望在此方案中首先更新基类表?我在继承表的数据库中创建一个触发器来跟踪值的变化,但是当我这样做时,我需要在基表中引用日期。
答案 0 :(得分:0)
您无法指定保存订单
当您调用SaveChanges时,所有实体都是从内部订购的 在方法“ProduceDynamicCommands”中按顺序再次排序 方法“TryTopologicalSort”循环添加命令没有 前任左(如果你添加A和B,A依赖于B,那么B将是 在A)之前插入
除非您覆盖 A LOT 的内部方法(我必须这样做以开发BulkSaveChanges功能),否则无法指定订单。