试图了解我是否可以扩展通用存储库接口。
很抱歉,我是新手,并且谷歌搜索了这个并且找不到任何这样的实现,这让我觉得我试图违反通用存储库逻辑。
我正在使用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>();
我出错的任何建议或我如何做到这一点?
答案 0 :(得分:0)
以下是我的问题的解决方案,如果我想为特定实体添加自定义方法,我需要继承基本存储库。 click here to see how to solve the above problem