asp.net-mvc - 存储库模式 : One repository class for each entity?

标签 asp.net-mvc linq linq-to-sql repository-pattern

假设您在 LINQ 类中定义了以下实体:

Product
Customer
Category

我是否应该为所有人设置一个存储库类:
StoreRepository

...或者我应该:
ProductRepository
CustomerRepository
CategoryRepository

各自的优缺点是什么?就我而言,我的解决方案中有几个“应用程序”……Store 应用程序只是其中之一。

最佳答案

这是我的观点。我是 Repository 模式的严格追随者。应该有 3 个方法接受单个实体。添加、更新、删除,一般定义。

public interface IRepository<T>
{
     void Add(T entity);
     void Update(T entity);
     void Delete(T entity);
}

除了这些方法之外,您还要处理“查询”或服务方法。如果我是你,我会像上面一样定义存储库,添加如下所示的“QueryProvider”和 将您的业务逻辑放在“服务”或“命令/查询”(来自 CQRS,谷歌它)中的位置 .
public interface IQueryProvider<T>
{
     TResult Query<TResult>(Func<IQueryable<T>, TResult> query);
}

(希望我的意见有点用:))

关于asp.net-mvc - 存储库模式 : One repository class for each entity?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3524646/

相关文章:

asp.net-mvc - MVC5 - 用于特定操作的 block Controller 输出缓存

c# - 使用存储库模式进行查询

c# - 如何在 View 中显示变量值?

c# - 等待后任务继续不工作

C# 算法 - 找到最少数量的必要对象

c# - ASP.NET Core 中 AsNoTracking 的模拟或更好的解决方法

c# - 如何使用 LINQ 在函数中定义返回类型?

c# - 当您在需要 Expression 的地方使用自定义方法时,如何创建 C# 编译错误?

asp.net - IdentitySever3 为多个域重定向 URL

c# - 如何使用单个查询进行左连接、分组和选择?