Relationships in Entity Framework.
在Entity Framework中,可以通过属性的方式来访问有外键关系的表。当通过这种方式来访问的时候,存在一个何时加载关系表的问题。一共有lazy, delayed, eager 这三种方式。默认的方式是lazy。
public EFDemoEntities() : base("name=EFDemoEntities", "EFDemoEntities")
{
this.ContextOptions.LazyLoadingEnabled = true;
OnContextCreated();
}
Lazy方式载入数据:当要访问外键表的数据的时候才会载入数据。
当然可以手动改变这种方式,现在假如有两个表,Customer表,Orders表,其中Customer表中通过OrderID加外键建立和Orders表的联系。
Eager方式载入数据:主键表和外键表的数据同时载入
foreach (Customer customer in data.Customers.Include("Orders"))
{
Console.WriteLine("{0}", customer.CompanyName);
foreach (Order order in customer.Orders)
{
Console.WriteLine("\t{0} {1:d}", order.OrderID, order.OrderDate);
}
}
Delayed方式载入数据:这种方式实际上是手动载入数据,但前提是要设置LazyLoadingEnabled =False
if (!customer.Orders.IsLoaded)
customer.Orders.Load();

浙公网安备 33010602011771号