如何使用 TPT 继承控制 EF6 数据库模型中 SQL 更新的顺序
本文关键字:SQL 更新 顺序 数据库模型 EF6 何使用 TPT 继承 控制 | 更新日期: 2023-09-27 18:33:26
给定以下类...
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)。
问题
如何指定在此方案中首先更新基类表?我正在继承表的数据库中创建一个触发器来跟踪值更改,但是当我这样做时,我需要引用基表中的日期。
无法
指定保存顺序
调用 SaveChanges 时,所有实体都从内部排序 在方法"ProduceDynamicCommand"中的顺序,然后再次按 方法"TryTopologicalSort"哪个循环添加命令,没有 前身左(如果加上 A 和 B 并且 A 依赖于 B,那么 B 将是 插入在 A)
之前
除非您覆盖很多内部方法,否则您无法指定订单(我必须这样做才能开发批量保存更改功能)。