[英]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.