我的问题是关于EF提供的广度优先的实体检索。 在我的EF代码优先模型中,我有一个树状分层结构,例如由产品实例和一些附加费组成的账单。加载导航属性的顺序
public class Bill
{
public int Id { get; set; }
public virtual ICollection<Product> Products { get; set; }
public virtual ICollection<BillSurcharge> Surcharges { get; set; }
// ...
}
public class Product
{
public int Id { get; set; }
public virtual Bill Bill { get; set; }
public int BillId { get; set; }
public virtual ICollection<ProductSurcharge> Surcharges { get; set; }
// ...
}
// ...
我观察到,在上述实体的情况下,查询
context.Bills.Include("Products").Include("Products.Surcharges").Include("Surcharges")
导致实体检索的以下序列。
- 比尔
- Bill.Products
- Bill.Surcharges
- Bill.Products.Surcharges
然而,交换宣称产品及附加结果如下顺序线。
- 比尔
- Bill.Surcharges
- Bill.Products
- Bill.Products.Surcharges
相反,交换包括()似乎并没有什么后果。我使用EF 5
为了避免过度复杂的事件处理(负责在给定的法案树的所有实体对象的属性值的更新,我找了一些假设。
难道是在你的意见,合理地假设一定的加载顺序被保留?
重复:http://stackoverflow.com/questions/14191288/how-to-determine-the-order-of-property-loading-in-codefirst – Simon