首页 > 解决方案 > 扩展特定于实体的存储库类 C#

问题描述

我目前有一个实体框架存储库类,它基于我在网上找到的以下代码。

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));

但是理想情况下,我只想扩展 Base SqlRepository 类来创建一个 BlogPostRepository 来尝试保持代码干净。我被我的 BlogPostRepository 中的类签名卡住了。我将如何编写一个扩展以下基类的类/

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

标签: c#entity-frameworkrepository-pattern

解决方案


创建类,如:

public class BlogRepository : SqlRepository<Blog, MyContext>

向派生类添加一个构造函数,其中包含调用基类构造函数的必要参数(参考:链接


推荐阅读