【发布时间】:2017-05-16 06:14:45
【问题描述】:
我正在编写一个详细的通用存储库 here 。我正在使用 DB First 方法生成 EF 模型。
public class GenericRepository<TEntity> where TEntity : class
{
internal SchoolContext context;
internal DbSet<TEntity> dbSet;
public GenericRepository(SchoolContext context)
{
this.context = context;
this.dbSet = context.Set<TEntity>();
}
//Removed for brevity reason
}
在我的例子中,intellisense 没有将 Set 显示为函数,而是列出了所有实体。为了使其通用,我不需要命名实体而是通用方法。
如何将其分配给通用实体,或者是否有其他更好的方法来编写通用存储库?
【问题讨论】:
-
如果
SchoolContext派生自DbContext,它应该有Set()方法。你当前的代码编译了吗? -
我感觉你走错了方向。包装上下文和数据库集的通用 repo 根本没有意义。
-
@haim770 实际上它确实来自 DBContext。
-
@niksofteng 如果您能给出解释性答案会很好吗?我有数百个实体,编写 100 个 IRepository 非常耗时,而其中大多数都要做相同类型的工作。
-
当您将存储库中的上下文类型从
SchoolContext更改为DbContext时,您是否获得Set()函数?
标签: c# entity-framework repository