我正在尝试更新实现ISidebarItem
的实体。我可以通过下面的SidebarItemType
参数来确定实体的类型(用字符串表示)。每个SidebarItemType
都实现ISidebarItem
。
我有以下内容:
Type type = Type.GetType($"Project.Database.Models.{sidebarItemViewModel.SidebarItemType}, Project.Database", true);
PropertyInfo prop = type.GetProperty("SidebarItemLabel");
DbSet itemList = _db.Set(type);
我尝试查询itemList.First()
和itemList.Where()
,但是方法不可用。然后我尝试了这个:
var listOfItems = itemList.Local.OfType<ISidebarItem>();
var existingItem = listOfItems.First(s => s.SidebarItemId == sidebarItemViewModel.SidebarItemId);
prop.SetValue(existingItem, sidebarItemViewModel.SidebarItemLabel, null);
_db.SaveChanges();
return response;
尽管给定的SidebarItemType
没有任何结果,即使该表中有行。
如何在不加载所有实体的情况下更新上下文化的实体,以及何时必须通过反射来推断Type?