Dan*_*net 10 repository repository-pattern
我有一个repository(CustomerRepository),它从数据层检索数据.大多数业务逻辑都在Customer存储库接受或返回的实体类()中.
但是,您在哪里放置全局实体业务逻辑(适用于所有客户)?
例如,我可能不希望将所有客户都退回给某些用户.我不想把那个逻辑放在存储库中.
blu*_*blu 21
我同意Robert Munteanu的观点.
基本上,您将模型中不固有的业务逻辑汇总到中间层.中间层是业务层/业务对象/业务逻辑层/等,但仅称为服务层.它不一定是Web服务,它广泛使用术语服务,因为它聚合了特定应用程序区域的功能.
您基本上有一个包含存储库引用的CustomerService类.您的表示层将引用服务层类.
还有一个额外的区别可以从您使用.net的名称猜测,并且可能使用LINQ to SQL作为NerdDinner中概述的存储库.
存储库通常将IQueryable返回到服务层,允许服务层链一起多个查询来构建不同的结果集.然后,服务使用ToList或其他类似方法计算表达式,并将其返回到表示层.
将它放在另一个存储库(BusinessRuleRepository)中并让CustomerRepository使用它.
要么
如果业务逻辑仅限制结果,则用户可以看到您可能希望将Facade模式与工厂一起使用.在这种情况下,您将拥有一个ICustomerRepository来处理您的CustomerRepository和LimitedCustomerRepository(可能封装CustomerRepository),以及一个CustomerRepositoryFactory,它为用户返回相应的ICustomerRepository.
| 归档时间: |
|
| 查看次数: |
13095 次 |
| 最近记录: |