我正在开发一个使用实体框架 6.1.3 的项目。现在,在将子对象添加到父实体列表时,我们遇到了相当大的性能问题(请参见下面的代码示例)。
我们正在使用延迟加载,所以我注意到在我们调用之前一切正常,_parent.Children.Add(child);因为它似乎从数据库中加载所有子节点只是为了能够添加一个新的子节点。由于我们的一些父对象有大约 50,000 个子对象,这会延迟这个简单的插入调用 7-8 秒,有时甚至会导致超时。
对我来说,实体框架加载所有子节点只是为了添加一个子节点并没有什么意义,那么有没有办法可以避免这种情况,或者这是实体框架的设计缺陷,我们应该找到解决方法吗?
我显然想为此找到一个解决方案,并且不希望不必为这个问题实现纯 ADO 查询。
谢谢!
public class Parent
{
public Guid Id { get; set; }
public virtual ICollection<Child> Children { get; set; }
}
public class Child
{
public Guid Id { get; set; }
}
public class ParentAggregate
{
private readonly Parent _state;
public ParentAggregate(Parent state)
{
_state = state;
}
public void AddChild(Guid id)
{
var child = new Child { Id = id };
_state.Children.Add(child);
}
}
吃鸡游戏
相关分类