我有2个问题可以单独回答。
Q#1
我正在尝试保存到数据库服务器的往返行程。
这是我的算法:
- 插入 2 个实体(获取数据库生成的 ID)
- 使用返回的 ID 调用将 ID 传递给它的存储过程
存储过程获取 ID 并填充我用来存储有向无环图的邻接表。
目前,对于每个父子关系,我都有一个往返于 RDBMS 的往返行程,以及一个用于实体插入的往返行程。
众所周知,我会做这样的事情:
public override int SaveChanges()
{
foreach (var entry in this.ChangeTracker.Entries().Where(e => e.State == System.Data.EntityState.Added).ToList())
{
if (entry.Entity is IRobot)
{
entry.Reference("Owner").CurrentValue = skyNet;
}
}
return base.SaveChanges();
}
所以我想知道是否有一种方法可以检测EntityState.Added的“ADD”,其完成类似于以下代码:
var robot = new Robot();
skyNet.Robots.Add(robot);
db.Add(skyNet);
db.SaveChanges();
这样我就可以做这样的事情:(注意这是伪代码)
public override int SaveChanges()
{
foreach (var entry in this.ChangeTracker.Entries().Where(e => e.State == EntityState.**AddedToCollection**).ToList())
{
db.Relate(parent: skyNet, child: entry.Entity);
}
return base.SaveChanges();
}
Q#2
在调用 SaveChanges() 之后,是否有调用存储过程作为数据库“旅行”的一部分?