Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 存储库之间的调用方法-存储库模式_Asp.net Mvc_Repository Pattern - Fatal编程技术网

Asp.net mvc 存储库之间的调用方法-存储库模式

Asp.net mvc 存储库之间的调用方法-存储库模式,asp.net-mvc,repository-pattern,Asp.net Mvc,Repository Pattern,我正在ASP.NETMVC应用程序中使用存储库模式(如站点中的示例)。我有两个存储库,一个叫做CategoryRepository,另一个叫做ProductRepository。我还使用两个服务,CategoryService和ProductService来验证和调用存储库方法。我需要ProductService中的类别列表,CategoryRepository中已经实现了返回一个类别的方法。我的问题是,从ProductService调用CategoryRepository中存在的ListCat

我正在ASP.NETMVC应用程序中使用存储库模式(如站点中的示例)。我有两个存储库,一个叫做CategoryRepository,另一个叫做ProductRepository。我还使用两个服务,CategoryService和ProductService来验证和调用存储库方法。我需要ProductService中的类别列表,CategoryRepository中已经实现了返回一个类别的方法。我的问题是,从ProductService调用CategoryRepository中存在的ListCategories方法的正确方法是什么?我不想在ProductRepository中实现另一个ListCategories方法(DRY哲学)。谢谢。

一个选项是为ProductService类提供CategoryService的实例

public class ProductService {
    ICategoryService _categoryService = null;

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

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

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

+1。一般来说,这会使您的服务在业务而非实体行上被拆分。那么,当目录服务使用ProductRepo更新产品,使用CategoryReporto更新一个服务方法中的类别时,会发生什么情况呢?这是否意味着ProductRepo更改在一个事务中完成,CategoryRepo更改在另一个事务中完成?我一直认为回购操作是离散的,除非您允许ProductRepo也更改类别。人们在现实世界中做什么?