爲簡單起見,我有一個帶有訂單表和PaymentMethod表的數據庫。這是一對多的關係。訂單表有許多描述訂單的字段,PaymentMethod只有一個ID和一個名稱。我已經在EF中映射了一個關聯,並且Order表中有一個名爲「PaymentMethodId」的外鍵。我有一個名爲PaymentMethodType的枚舉,這不是問題。我已經在下面測試了相同的代碼,但沒有涉及枚舉。我有很多其他表格都有相同的情況,並且有另外一種關係,但現在只有這個問題。實體框架POCO外鍵分配掛起
在下面的代碼中,我創建一個新的訂單,一切工作正常。如果我稍後在我的程序中獲得相同的訂單並嘗試將PaymentMethodId設置爲不同的值,則程序將掛起約25秒。我試圖通過POCO對象跟蹤代碼,它似乎一遍又一遍地循環/設置PaymentMethod和PaymentMethodId。任何建議或建議非常感謝!請隨時提問我可能遺漏的任何細節。我將POCO和SQL Server 2008 R2一起使用Entity Framework 4.0。
int orderid;
using (PinotsPaletteEntities context = new PinotsPaletteEntities())
{
Order order = new Order();
//assign other order information
order.PaymentMethodId = (int)PaymentMethodType.CreditCard;
context.Orders.AddObject(order);
context.SaveChanges();
orderid = order.Id;
}
using (var context = new PinotsPaletteEntities())
{
Order order2 = context.Orders
.Where(x => x.Id == orderid)
.FirstOrDefault();
order2.PaymentMethodId = (int)PaymentMethodType.Cash; //hangs here for 25secs
context.SaveChanges();
}
您使用POCO T4模板嗎?你能否驗證延遲不是由一些意外的延遲加載引起的? – 2012-03-10 10:15:05
如果您刪除PaymentMethodId屬性並設置PaymentMethod對象,會發生什麼情況? – 2012-03-11 21:46:34
如果將PaymentMethod對象設置爲null或一個好的對象,我會得到相同的結果。 PaymentMethodId也是一樣。 – user1260112 2012-03-12 16:33:22