EntityFramework通过ID获取对象?
|
泛型是否可以在不知道类型的情况下从我的EntityFramework获取对象?
我正在考虑以下方面的内容:
public T GetObjectByID<T>(int id)
{
return (from i in myDatabase.T where i.ID == id select i);
}
那可行吗?我可以用Reflection取take1并用于桌子吗?
编辑
另一个麻烦之处在于,并非我可用的所有表都使用\“ ID \”作为其唯一列名。
没有找到相关结果
已邀请:
8 个回复
芳菱挨啡
和检索您的实体的方法:
您也可以对链接的问题中提供的方法使用类似的方法。您只需要使用另一种方法来获取您的实体:
区别在于,即使您已经将实例加载到上下文中,第一种方法也始终查询数据库,而第二种方法首先检查实例是否已加载。该方法效率不高,因为它会一遍又一遍地建立这些名称。这是可以与任何键类型和名称一起使用的更通用的方法,而这是与复杂键一起使用的方法。 这两种方法都不能直接与继承一起使用-您必须提供基本类型才能使其起作用。
嘘伪
方法可能可以满足您的需求(DbSet.Find方法)。
缮记箔
限制为
类型,然后将其具有
属性(代表主键)。
森含械
这假定您要搜索的主键是主键列表中的第一个。
稼悸
结果
贡炮逗握惫
漂截嘘
然后,即使使用多值键,也可以在某些对象上实现它:
如果提供约束,则可以通用地使用它:
尽管您可以用键值填充一个空对象,然后使用它从数据库中提取一个对象,但是以这种方式进行操作需要您拥有该对象的一个实例。
藕挝
您可能会发现此解决方案比上面提供的解决方案更可靠。我已经在许多项目中将其用作通用存储库的一部分。希望它可以帮助您。