2
每當我更改實體對象時,引用更改會反映到指向同一實體的所有其他先前對象。例如:EF對象行爲
var menu = menuRepo.FindByByIdAsync(12);
var menu1 = menuRepo.FindByByIdAsync(12);
menu.Name = "Name";
Console.WriteLine(menu.Name+ " "+ menu1.Name);
在這一點上,如果我運行代碼片斷菜單和menu1都改變了。 這是因爲實體的代理髮生了嗎?我真的不明白這一點。如果這兩個對象在類對象中會有不同的名字......這怎麼可能?
編輯
更奇怪的是排序依據的情況我都試過...
var menu = menuRepo.FindById(1);
menu.MenuItems.OrderBy(m => m.OrderField).ToList();
這兩條線實際上責令項目集合菜單對象內。
我甚至不必設置它們......?
menu.MenuItems = menu.MenuItems.OrderBy(m => m.OrderField).ToList();
嘗試檢查 'System.Diagnostics.Debug.Assert(菜單==菜單1)' 執行的排序 - 你應該發現它們是同一個對象。這是因爲EF緩存它們。 – PhillipH
OrderBy返回IOrderedEnumerable的新實例。它不會進行現場排序。我相信你的診斷是不正確的。 –
PhillipH