繁体   English   中英

实体框架延迟加载对于刚添加的实体的属性失败

[英]Entity Framework lazy loading fails for properties of just added entity

试图通过延迟加载刚刚添加的实体来获取属性失败。

我到目前为止找到的唯一解决方案是对注释代码进行解除注释,换句话说,创建另一个Manager,然后创建另一个Context,因为每个Manager都有一个Context实例,然后重新查询实体。

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

这是我用来测试的代码:

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

对于使用Code First Entity Framework进行延迟加载,您需要一个代理对象(从原始POCO类继承的类的实例)。 从你的代码中看不出来,但我希望原始对象是通过新的Order()创建的,如果你想要一个代理对象,你应该使用DataContext.Orders.Create()。 生成的对象将是一个代理,延迟加载将起作用。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM