首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从数据库中检索对象的通用方法

从数据库中检索对象的通用方法
EN

Stack Overflow用户
提问于 2017-12-13 23:52:41
回答 1查看 39关注 0票数 1

我正在尝试使我的代码的一部分泛型。

非泛型代码:

代码语言:javascript
运行
复制
public static User GetUser(int id)
  {
     using (var db = new BroodNodigContext())
     {
        return db.Users.FirstOrDefault(u => u.Id == id);
     }
  }

我需要的代码,但却被砍到了边缘:

代码语言:javascript
运行
复制
public static object FooBar<T>(int id)
  {
     using (var db = new DatabaseContext())
     {
        return db.T.FirstOrDefault(t => t.Id == Id);
     }
  }

我得到的是:

代码语言:javascript
运行
复制
public static object GetTypeOutOfDatabase<T>(int id)
  {
     using (var db = new DatabaseContext())
     {
        dynamic test = typeof(T);
        db.Set<test>();

        return null;
     }
  }

有人告诉我可以使用db.Set<>()使其泛型,但我无法正确使用。

您是否知道如何将T转换为引用类型(如User),以便我可以将其放入db.set<>()

EN

回答 1

Stack Overflow用户

发布于 2017-12-14 00:00:12

实体框架提供了一个Find函数,它将通过主键进行查找。

注意,这是一个在方法中使用的object[],只需在一个让EF工作的函数中传递你的id,这很神奇,我提供了参数以使其更容易调用

代码语言:javascript
运行
复制
public static object FooBar<T>(params object[] id)
{
    using (var db = new DatabaseContext())
    {
        return db.Set<T>().Find(Id);
    }
}

这将适用于您的用例,但稍后您可能会发现您需要生成自己的自定义表达式,这将稍微复杂一些

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47797210

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档