我在单个 SaveChanges() 中插入(添加新的)子实体和父实体,EF 决定先插入子实体(引用父实体,可以在探查器中看到插入语句),这显然会抛出
INSERT 语句与 FOREIGN KEY 约束冲突...:
[DriverStat].DriverId -> [Driver].Id
driverId = Guid.NewGuid();
//parent
var dr = new Driver()
{
Id = driverId,
Name = "John",
};
db.Drivers.AddObject(dr);
//child
var driverMainStats = new DriverStat()
{
Driver = dr //parent reference. Same problem if FK DriverId = driverId is used
};
db.DriverStats.AddObject(driverMainStats);
db.SaveChanges();
由于 DriverStat 所引用的 Driver 'dr' 尚不存在。
知道为什么 EF 要在父实体 (Driver) 之前插入子实体 (DriverStat) 吗?有没有办法告诉 EF 做正确的事?
有任何想法吗?斯蒂沃
编辑:问题解决了。运行最新的 ddl 后,我不小心丢失了这两个表之间的外键,导致 EF 不关心订单。抱歉误报