【问题标题】:Entity Framework 4 load Record by IDEntity Framework 4 按 ID 加载记录
【发布时间】:2010-06-01 18:48:40
【问题描述】:

所以我正在考虑创建一个通用接口来与我的对象的 DataStorage 进行交互,我可以换掉它以使用 EF4 或 SubSonic 或 NHibernate 或一些 NoSQL 选项。

所以我有一个 ERD,每个表都有一个自动递增的 int 列“TableNameID”,它是主键我试图弄清楚如何使用通用方法中的主键从数据库中获取一条记录

public T GetSingle<T>(int primaryKey) where T : class

您如何使用 EF4 做到这一点?

【问题讨论】:

    标签: c# .net entity-framework entity-framework-4


    【解决方案1】:

    您可以通过通用的ObjectContext.CreateObjectSet() 来做到这一点。

    例如,类似:

    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();
    }
    

    【讨论】:

    • 如果表的名称是用户,主键是用户 ID,我想我应该更清楚。我认为这是一个开始,但我想如果我能通过 EF4 以某种方式找到主键的名称,效果最好
    • 这看起来是我能找到的最佳答案,同时使用反射来查找类名并让类名与表名相同,并且所有 ID 都遵循标准。
    • 你不需要反射来获取类名。 typeof(T).Name 可以,不需要System.Reflection
    • 我问了另一个相关问题。并在那里发布了比这里更好的答案stackoverflow.com/questions/2958921/…
    • 你说你试图避免反思?改变主意了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 2013-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    相关资源
    最近更新 更多