【问题标题】:generic repository to access database访问数据库的通用存储库
【发布时间】:2016-02-03 00:48:14
【问题描述】:

您好,我想创建一个通用的Repository 类来访问数据库。它将通过类型化的存储库进行扩展

public abstract class Repository<T>
{
    protected MyContext ctx = null;

    public Repository()
    {
        if (this.ctx == null)
        {
            this.ctx = new MyContext();
        }
    }

    public T FindById(int id)
    {
        return this.ctx.T.Single(s => s.Id == id);
    }
}

唯一的问题是T 类在this.ctx.T 中无法识别。我明白为什么,在我的上下文中没有这样的集合。我能以某种方式解决这个问题吗?

【问题讨论】:

  • MyContext 的类型是什么?它是由实体框架或其他一些 ORM 库生成的吗?
  • @JesseCarter 它是由实体框架生成的

标签: c# entity-framework generics


【解决方案1】:

对于实体框架,您可以使用DbContext.Set 方法:

this.ctx.Set<T>()

【讨论】:

  • @Fixus 你可以创建一个包含这个字段的接口(@98​​7654323@),添加约束where T : class, IEntity并在你需要通过Id查询的所有类中实现这个接口
猜你喜欢
  • 2013-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-31
  • 2020-12-05
  • 2020-07-01
  • 2020-05-03
相关资源
最近更新 更多