正确实施大型模型的存储库服务模式

问题描述:

我在我的模型中有一个大型数据集的C#WPF MVVM项目中实现存储库服务模式的困境。正确实施大型模型的存储库服务模式

我首先在EntityFramework数据库中创建了大约40个实体,所以我的模型非常庞大,对我来说,实现40个不同的存储库是没有意义的,因为我使用了通用存储库服务模式。

我的仓库看起来如下:

public interface IEntityRepository<T> : IDisposable where T : class 
    { 
    IQueryable<T> FindBy(Expression<Func<T, bool>> predicate); 
    IEnumerable<T> getEntities(); 
    T RetrieveEntity(int entityID); 
    void CreateEntity(T entity); 
    void UpdateEntity(T entity); 
    void DeleteEntity(T entity); 
    void Save(); 
    } 

这里是实现方法的类的签名。

public class EntityRepository<T> : 
    IEntityRepository<T> where T : class 
    { 
     private DbContext context; 
     public EntityRepository(DbContext context) 
     { 
     this.context = context; 
     }   

     ..... 

    } 

我现在的问题是,服务将如何看起来像这样我不必为我的模型中的每个实体实现它。 我正在寻找类似的东西,我可以通过实体的类型名称动态地创建服务。

有没有人知道我的问题的解决方案? 谢谢!

+0

我认为你所做的研究应该有一些示例实现。 SO不是代码编写服务,您需要询问您编写并可以演示的代码的问题。 – Crowcoder

我不相信如果您的存储库类与您的物理数据库实体一对一映射,存储库模式是一个有用的层。

对服务层或其他类型的门面可能会更好。如果你坚持在实体框架之上的数据访问层,你也可以使用查询模式找到成功。在这个模式中,每个查询类都可以有一个参数对象,用于定义可以查询模型的参数。返回的数据结构更适合在业务或用户界面层使用。每个查询对象都与您的业务或用户界面层的某个部分相关。当您必须查询数据而不是访问单个实体时,可以使用查询模式。