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();

posted @ 2011-06-15 18:32  HelloWorld.Michael  阅读(187)  评论(0)    收藏  举报