C# 实体框架4按ID加载记录
因此,我正在考虑创建一个通用接口来与我的对象数据存储交互,一个我可以交换出来使用EF4、亚音速、NHibernate或一些NoSQL选项的接口 所以我有一个ERD,每个表都有一个自动递增的int列“TableNameID”,这是主键,我试图弄清楚如何在通用方法中使用主键从数据库中获取一条记录C# 实体框架4按ID加载记录,c#,.net,entity-framework,entity-framework-4,C#,.net,Entity Framework,Entity Framework 4,因此,我正在考虑创建一个通用接口来与我的对象数据存储交互,一个我可以交换出来使用EF4、亚音速、NHibernate或一些NoSQL选项的接口 所以我有一个ERD,每个表都有一个自动递增的int列“TableNameID”,这是主键,我试图弄清楚如何在通用方法中使用主键从数据库中获取一条记录 public T GetSingle<T>(int primaryKey) where T : class public T GetSingle(int primaryKey),其中T:cla
public T GetSingle<T>(int primaryKey) where T : class
public T GetSingle(int primaryKey),其中T:class
如何使用EF4实现这一点?您可以通过通用的 例如,类似于:
public T GetSingle<T>(int primaryKey) where T : class
{
var q = Context.CreateObjectSet<T>().Where("it.TableNameID = @tableNameId");
q.Parameters.Add(new ObjectParameter("tableNameId", primaryKey));
return q.Single();
}
public T GetSingle(int primaryKey),其中T:class
{
var q=Context.CreateObjectSet()。其中(“it.TableNameID=@TableNameID”);
q、 添加(新的ObjectParameter(“tableNameId”,primaryKey));
返回q.Single();
}
如果表名是Users,那么我想我应该更清楚,主键是UsersID。我认为这是一个开始,但我想如果我能通过EF4找到主键的名称,这将是最好的答案。这看起来是我能找到的最好的答案,同时使用反射来查找类名,使类名与表名相同,所有ID都遵循一个标准。你不需要反射来获取类名typeof(T).Name
可以,不需要System.Reflection
我问了另一个相关的问题。然后把答案贴在那里,比你说的要避免反思的答案更有效?你改变主意了吗?