NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)

回顾:NLayerAppV3是一个使用.net 2.1实现的经典DDD的分层架构的项目。

NLayerAppV3是在NLayerAppV2的基础上,使用.net core2.1进行重新构建的;它包含了开发人员和架构师都可以重用的DDD层。

Github地址:https://github.com/cesarcastrocuba/nlayerappv3

NLayerAppV3的基础结构层一共分为两个部分。处理数据相关的基础组件和Cross-Cutting的基础组件。

处理数据相关的基础组件主要包含UOW和仓储的实现;

Cross-Cutting的基础组件目前主要包含数据适配器、国际化、验证;

本篇介绍NLayerAppV3的Infrastructure(基础结构层)的Data部分和Application(应用层)

1、Infrastructure(基础结构层)的Data部分

Data部分是处理数据相关的基础组件主要包含UOW和仓储的实现。

UOW的实现:BaseContext继承了DbContext和IQueryableUnitOfWork
DbContext是EF Core数据库上下文,包Microsoft.EntityFrameworkCore
IQueryableUnitOfWork继承IUnitOfWork和ISql,是EF Core方式的契约定义

Isql定义了支持sql语句的方式

Repository仓储的层超类型,通过构造函数注入了IQueryableUnitOfWork和ILogger,定义了EF Core方式的CURD以及查询过滤,包括分页等行为

MainBCUnitOfWork实现了BaseContext。示例使用内存数据库的方式来演示,当然,根据实际需要,可以很容易地扩展使用sqlserver、mysql、sqlite等,这也符合了开闭原则

BankAccountRepository是BankAccount仓储,继承Repository<BankAccount>,IBankAccountRepository,通过构造函数注入了MainBCUnitOfWork和ILogger,提供了一个GetAll方法,用来获取BankAccount的集合。

NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)

NLayerAppV3-Infrastructure(基础结构层)的Data部分和Application(应用层)

public class BankAccountRepository :Repository<BankAccount>,IBankAccountRepository { #region Constructor /// <summary> /// Create a new instance /// </summary> /// <param>Associated unit of work</param> /// <param>Logger</param> public BankAccountRepository(MainBCUnitOfWork unitOfWork, ILogger<Repository<BankAccount>> logger) : base(unitOfWork, logger) { } #endregion #region Overrides /// <summary> /// Get all bank accounts and the customer information /// </summary> /// <returns>Enumerable collection of bank accounts</returns> public override IEnumerable<BankAccount> GetAll() { var currentUnitOfWork = this.UnitOfWork as MainBCUnitOfWork; var set = currentUnitOfWork.CreateSet<BankAccount>(); return set.Include(ba => ba.Customer) .AsEnumerable(); } #endregion }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxgwj.html