通用存储库来访问数据库

时间:2016-02-02 16:44:04

标签: c# entity-framework generics

您好我想创建一个将访问数据库的通用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类。我理解为什么,在我的背景下没有这样的集合。我能以某种方式解决这个问题吗?

1 个答案:

答案 0 :(得分:7)

对于Entity Framework,您可以使用DbContext.Set方法:

this.ctx.Set<T>()