这个难倒我了。
我有一个客户和订单实体。客户可以有很多订单。
当我创建一个新订单并设置 Customer 属性(Order.Customer = customer)时 Customer 有 10,000 个订单时,会有很长的延迟(20 秒)。在添加这个新订单之前,上下文似乎正在加载所有 10,000 个订单。
我目前没有直接使用 FK,我怀疑这可能会有所帮助。
任何想法如何在不进行大规模重构的情况下改进问题?
干杯。
最佳答案
问题很可能是您使用的是 T4 POCO 模板。此模板生成讨厌的修复方法并在所有导航属性中内部使用它们。如果您在一侧修改导航属性,它会触发修复,它将尝试修改反向导航属性以使对象图保持一致。问题来了。一旦您分配 Customer
属性(property)给 Order
实例它将修复 Orders
Customer
上的属性(property)实例但像任何其他代码一样修复访问属性并触发所有客户订单的延迟加载。
只有几个解决方案:
null
导航属性,这将再次触发前一个父级的修复。 关于entity-framework - Entity Framework 4 将订单链接到拥有 10,000 个订单的客户的速度非常慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6378063/