.net 优化父级和子级的EF插入

.net 优化父级和子级的EF插入,.net,sql-server,entity-framework,.net,Sql Server,Entity Framework,我正试图找出最佳的方法来优化插入一个有很多孩子的父母。我有一些足够简单的类,EF代码非常简单。在正常情况下,一切正常。但是,如果同时插入许多父级,并且这些父级有很多子级,则可能会导致与父表相关的查询出现死锁和超时。我假设每个SaveChanges都在启动一个事务并锁定父表,直到所有插入都完成。对于如何改进这个过程有什么建议吗?下面是代码的简化版本,如果需要更多,请告诉我 var parent = new Parent(); foreach (var item in list) { pa

我正试图找出最佳的方法来优化插入一个有很多孩子的父母。我有一些足够简单的类,EF代码非常简单。在正常情况下,一切正常。但是,如果同时插入许多父级,并且这些父级有很多子级,则可能会导致与父表相关的查询出现死锁和超时。我假设每个SaveChanges都在启动一个事务并锁定父表,直到所有插入都完成。对于如何改进这个过程有什么建议吗?下面是代码的简化版本,如果需要更多,请告诉我

var parent = new Parent();

foreach (var item in list)
{
    parent.Children.Add(item);
}

using (var context = new DBContext())
{
    context.Parents.Add(parent);
    context.SaveChanges();
}

您是如何配置表/键/索引等的?请尽可能多地提供信息。在某些情况下,这不会成为性能问题。例如,如果您的键不是
IDENTITY
,则可以直接将每个实体(包括子实体)添加到上下文中。是的,与这些对象相关的表具有主键,并且已在这些键上建立索引,还可以在上查询其他一些列。父项/子项也通过外键链接。是否有任何主键
IDENTITY
?是的,父项和子项的键都是IDENTITY。在这种情况下,我从来没有遇到过问题,请提供实际情况?