汎用リポジトリインタフェースを拡張できるかどうかを理解しようとしています。汎用リポジトリを拡張する方法
申し訳ありませんが、私はこれを初めてお使いになり、これをGoogleの検索で見つけられないので、ジェネリックリポジトリロジックに挑戦しようとしています。
私は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
は、しかし、私は1つのエンティティのみ名のための特別なメソッドを実装する必要がありConference
など:
IList<T> GetIncludedItems(Expression<Func<T, bool>> predicate, params string[] navigationProperties);
ジェネリックリポジトリをどのように拡張して処理できますか他のエンティティを実装していないという例外的な方法です。さらに、私のservice class
は、コンストラクタインジェクションを介してこれらを実装しています(Repositories
)。
public ConferenceService(IRepository<Conference> _conferenceRepository)
また、私はConfigurServices
を介して依存関係バインディングを維持する必要があります。
services.AddScoped<IConferenceService, ConferenceService>();
私は間違っているか、これをどのように達成することができますか?
Entity Frameworkを使用していますか、これは他のORMのラッパーですか? – Igor
特別なレポジトリ 'ConferenceRepository:IConferenceRepository'を作成する必要があります。これは 'IRepository'から派生したものです –
FCin
**リポジトリパターンを介してEFを隠そうとしている**に対して**をお勧めします。リポジトリパターンの後にEFがあるので、リポジトリのリポジトリ=>災害 –