【发布时间】:2014-06-30 10:10:34
【问题描述】:
我在数据库中有一堆查找实体(总共大约 10 个),它们都实现了以下接口
interface ILookupValue
{
int Id { get; set; }
string Name { get; set; }
string Description { get; set; }
}
目前,我为每个实现 ILookupRepository 接口的实体都有一个存储库
public interface ILookupRepository<T> where T : class
{
IEnumerable<T> GetLookupData();
}
示例实现
public class CustomerRepository : ILookupRepository<Customer>
{
public IDbContext _context;
public CustomerRepository(IDbContext context)
{
context = _context;
}
public IEnumerable<Customer> GetLookupData()
{
return _context.Set<Customer>();
}
}
我预计任何存储库都不需要任何其他方法,那么有没有一种方法可以为这种情况创建一个通用存储库,而不必为每种查找类型使用额外的代码连接存储库?
编辑:基于 Dennis_E 的回答,这就是我想要的
public class LookupRepository<T> : ILookupRepository<T> where T : class, ILookupValue
{
public IDbContext _context;
public LookupRepository(IDbContext context)
{
context = _context;
}
public IEnumerable<T> GetLookupData()
{
return _context.Set<T>();
}
}
【问题讨论】:
-
您也应该将
ILookupValue约束放在ILookupRepository上
标签: c# .net entity-framework generics