存储库之间调用方法 - 存储库模式

发布于 2024-07-15 17:55:25 字数 494 浏览 7 评论 0原文

我正在使用存储库模式(如 https://dotnet.microsoft.com 中的示例/apps/aspnet/mvc 站点)在 ASP.NET MVC 应用程序中。 我有两个存储库,一个称为 CategoryRepository,另一个称为 ProductRepository。 我还使用两个服务(CategoryService 和 ProductService)来验证和调用存储库方法。 我需要 ProductService 中的类别列表,返回类别的方法已在 CategoryRepository 中实现。 我的问题是,从 ProductService 调用 CategoryRepository 中存在的 ListCategories 方法的正确方法是什么? 我不想在 ProductRepository 中实现另一个 ListCategories 方法(DRY 哲学)。 谢谢。

I'm using the Repository Pattern (like the examples in the https://dotnet.microsoft.com/apps/aspnet/mvc site) in a ASP.NET MVC application. I have two repositories, one called CategoryRepository an other called ProductRepository. I also use two services, the CategoryService and ProductService to validate and call the repositories methods. I need a list of categories in ProductService, a method that return one is already implemented in the CategoryRepository. My question is, which is the correct way to call the ListCategories method that exists in CategoryRepository from ProductService? I don't want to implement another ListCategories method in the ProductRepository (DRY philosophy). Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

甜中书 2024-07-22 17:55:25

我建议将类似的存储库整合到一项服务中。 因此,如果您正在创建电子商务应用程序,请将 ProductRepository、CategoryRepository 等汇总到 CatalogService 之类的内容中,并让它托管所有相关的存储库。

I would recommend rolling similar repositories into one service. So if you're creating an e-Commerce application roll up ProductRepository, CategoryRepository etc into something like CatalogService and have it host all repositories that are related.

〆一缕阳光ご 2024-07-22 17:55:25

一种选择是为 ProductService 类提供 CategoryService 的实例。

public class ProductService {
    ICategoryService _categoryService = null;

    public ProductService(ICategoryService categoryService) {
        _categoryService = categoryService;
    }
}

然后,您可以从 ProductService 访问类别列表,而无需建立与任何特定 CategoryService 实现的直接耦合。

One option is to provide the ProductService class an instance of CategoryService.

public class ProductService {
    ICategoryService _categoryService = null;

    public ProductService(ICategoryService categoryService) {
        _categoryService = categoryService;
    }
}

You could then access the category listings from the ProductService without having to establish a direct coupling to any specific CategoryService implementation.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文