我需要在我的两个表中插入新行,第一个表的自动生成的 id 字段是第二个表的字段之一。目前我正在使用事务来插入数据。我当前的代码如下
using (var context = new ApplicationDatabaseEntities())
{
using (var transaction = context.Database.BeginTransaction())
{
try
{
foreach (var item in itemList)
{
context.MyFirstEntity.Add(item);
context.SaveChanges();
mySecondEntity.MyFirstEntityId = item.Id;
context.MySecondEntity.Add(mySecondEntity.MyFirstEntityId );
context.SaveChanges();
}
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
Console.WriteLine(ex);
}
}
}
上面的代码工作正常。我的问题是,这是正确的方法吗?我的意思是,如果我要插入 1000 或 2000 个项目,我当前的代码是否会影响性能
最佳答案
可以使用隐式事务改进代码:
foreach (var item in itemList)
{
context.MyFirstEntity.Add(item);
mySecondEntity.MyFirstEntity = item;
context.MySecondEntity.Add(mySecondEntity);
}
context.SaveChanges();
注意:我使用了导航属性而不是 id。
关于c# - Entity Framework 6 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31044801/