如何查询DbSet来更新使用反射实现接口的实体

时间:2019-05-12 19:48:51

标签: c# entity-framework

我正在尝试更新实现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?

0 个答案:

没有答案