2014-08-27 126 views
1

尝试通过延迟加载刚添加的实体获取属性失败。实体框架延迟加载失败,只是添加实体的属性

我到目前为止找到的唯一解决方案是对注释代码进行分解,换句话说就是创建另一个管理器,然后创建另一个上下文,因为每个管理器都有一个上下文实例,然后重新查询该实体。

我也尝试在所有经理之间创建一个共享上下文实例,但结果相同。 任何想法为什么重新创建上下文解决它,以及如何解决这个问题?

这里是我用来测试的代码:

IOrderManager ordManager = new OrderManager(); 

    [TestMethod] 
    public void CategoryFromOrder() 
    { 
     Order order = new OrderBuilder() 
      .SetCategory(2) 
      .SetLegalForm(8) 
      .SetClientIdentifier(new Random().Next(11111111,99999999).ToString()) 
      .SetLastName("Chaouachi") 
      .SetFirstName("Saif") 
      .SetQuantity(450) 
      .SetStatus(Order.StatusValues.New) 
      .SetAccountHolder("John") 
      .SetPrimaryKey(PrimaryKeyFactory.GetOrderPrimaryKey(null, 1, 2)) 
      .Build(); 


     int res = ordManager.AddOrder(order); 


    //ordManager = new OrderManager();      
    // order = ordManager.GetOrder(PrimaryKeyFactory.GetOrderPrimaryKey(res, 1, 2)); 

     var categ = order.Category; 

     Assert.IsNotNull(categ); 
    } 

回答

2

对于延迟加载与代码第一次实体框架工作,你需要一个代理对象(从原始的POCO类继承的类的实例)。从你的代码中不明显,但我期望原始对象是通过新的Order()创建的,如果你想要一个代理对象,你应该使用DataContext.Orders.Create()。产生的对象将是一个代理,延迟加载将起作用。

http://msdn.microsoft.com/en-us/library/gg679504(v=vs.113).aspx

相关问题