0

我将 Code First 与实体框架一起使用。

我有一个具有另一个类的虚拟属性的类(延迟加载)。

public class Order{
  public int Id { get; set; }
  public virtual ICollection<OrderItem> OrderItems { get; set; }
}

如果我Order从数据库中获取并且不包含OrderItem,则关闭 DbContext,是否可以稍后加载它们?如果是,如何?

例如。

private static Order GetFirstOrder(Func<Order, bool> predicate)
{
   using (var db = new MyContext())
   {
       return db.Orders.First(predicate);
   }
}

private static void DoSomething()
{
    var order = GetFirstOrder(a => a.Id == 1);
    //do something with OrderItems later?
}
4

2 回答 2

1

Lazy loading只要查询的上下文是活动的,它就可用。

如果它关闭了,那么它就结束了,你将不得不重新查询(一些GetOrderItemsByOrder查询),或者重新附加。无论如何,“手动”做某事。

于 2013-10-17T07:16:34.987 回答
0

您应该包括集合名称。

var myItemWithCollection = (from s in db.tableName.Include("ListName").Where(s => s.Id.Equals(ItemId)) select s).FirstOrDefault();
于 2013-10-17T07:15:40.493 回答