簡體   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