>每当我更改实体对象引用时,更改都会反映到指向同一实体的所有其他先前对象。 示例:
var menu = menuRepo.FindByByIdAsync(12);
var menu1 = menuRepo.FindByByIdAsync(12);
menu.Name = "Name";
Console.WriteLine(menu.Name+ " "+ menu1.Name);
此时,如果我运行代码片段,菜单和menu1都会更改。发生这种情况是因为实体的代理吗?我真的不明白。如果这两个对象在哪里类对象它们会有不同的名称...这怎么可能?
编辑
更奇怪的是我尝试过的 Orderby 场景......
var menu = menuRepo.FindById(1);
menu.MenuItems.OrderBy(m => m.OrderField).ToList();
这 2 行实际上对菜单对象内的项集合进行排序。
我甚至不必设置它们...???
menu.MenuItems = menu.MenuItems.OrderBy(m => m.OrderField).ToList();
在其上下文中仅保留同一对象的一个实例;FindByIdAsync 检索 Id = 12 的项,并在上下文中设置它的引用。第二次调用 FindByIdAsync 时,它会返回从上下文到同一对象的引用。因此,这就是为什么当您更改第一个对象中的属性时,第二个对象中的相应属性也会更改。
按顺序不返回排序集合本身; 返回值是一个对象,用于存储执行排序所需的所有信息。
在通过直接调用其 GetEnumerator 方法或使用 foreach 枚举对象之前,不会执行排序。
menu.MenuItems.OrderBy(m => m.OrderField)
不执行任何排序
menu.MenuItems.OrderBy(m => m.OrderField).ToList();
执行排序,因为调用了 ToList((