Расширить класс репозитория C #, специфичный для сущности - PullRequest
0 голосов
/ 01 марта 2019

В настоящее время у меня есть класс репозитория структуры сущностей, основанный на приведенном ниже коде, который я нашел в Интернете.

https://gist.github.com/ashrafeme/060f7773e25903ced986804ee7276f5f

Это прекрасно работает, однако я хотел бы создатьдополнительные методы, которые выполняют определенные функции для конкретных объектов.Например, если бы у меня была запись в блоге, которую необходимо отфильтровать по типу записи, я мог бы написать в своем контроллере

 SqlRepository<Blog, MyContext> blogPostRepo = new SqlRepository<Blog, MyContext>(dbContext);
            LinkedList<Blog> blogPosts = (LinkedList<Blog>)blogPostRepo.Set<Blog>().Where(p => p.PostType.Id.Equals(2));

Однако в идеале я хотел бы просто расширить базовый класс SqlRepository, чтобы создать BlogPostRepository, чтобы попытатьсяи держите код в чистоте.Я застрял в минуту с сигнатурами классов в моем BlogPostRepository.Как бы я написал класс, который расширяет приведенный ниже базовый класс /

 public class SqlRepository<TEntity, TContext> : IRepository<TEntity>, IDisposable
         where TEntity : class
         where TContext : DbContext
    {
enter code here

1 Ответ

0 голосов
/ 01 марта 2019

Создать класс, например:

public class BlogRepository : SqlRepository<Blog, MyContext>

Добавить конструктор к производному классу с необходимыми параметрами, который вызывает конструктор базового класса (Ref: Ссылка )

...