我应该如何扩展通用存储库

时间:2017-08-18 14:33:59

标签: c# asp.net-core entity-framework-core repository-pattern

试图了解我是否可以扩展通用存储库接口。

很抱歉,我是新手,并且谷歌搜索了这个并且找不到任何这样的实现,这让我觉得我试图违反通用存储库逻辑。

我正在使用EF Core ORM。

我有IRepository<T>

IEnumerable<T> GetAll();
T Get(long id);
void Insert(T entity);       
void Update(T entity);
void Delete(T entity);

然后我实现了一个通用存储库:

public class Repository<T> : IRepository<T> where T : class

但是我需要为一个实体名称Conference实现一个特殊方法,例如:

IList<T> GetIncludedItems(Expression<Func<T, bool>> predicate, params string[] navigationProperties);

如何在不让其他实体实现的情况下扩展我的Generic Repository来处理那个异常方法。此外,我的service class将通过构造函数注入实现这些Repositories

public ConferenceService(IRepository<Conference> _conferenceRepository )

我还需要通过ConfigurServices维护依赖关系。

services.AddScoped<IConferenceService, ConferenceService>();

我出错的任何建议或我如何做到这一点?

1 个答案:

答案 0 :(得分:0)

以下是我的问题的解决方案,如果我想为特定实体添加自定义方法,我需要继承基本存储库。 click here to see how to solve the above problem