黄冈免费网站建设平台,重庆工程建筑信息网,安徽教育机构网站建设,网站开发 平台建设概述工作单元模式有如下几个特性#xff1a;1、使用同一上下文2、跟踪实体的状态3、保障事务一致性。工作单元用来维护一个由已经被业务事物修改的业务对象组成的列表。Unit Of Work模式负责协调这些修改的持久化工作以及所有标记的并发问题。在数据访问层中采用Unit Of Work… 概述工作单元模式有如下几个特性1、使用同一上下文2、跟踪实体的状态3、保障事务一致性。工作单元用来维护一个由已经被业务事物修改的业务对象组成的列表。Unit Of Work模式负责协调这些修改的持久化工作以及所有标记的并发问题。在数据访问层中采用Unit Of Work模式带来的好处是能够确保数据完整性。如果在持久化一系列业务对象他们属于同一个事物的过程中出现问题那么应该将所有的修改回滚以确保数据始终处于有效状态。主要代码实现1、定义接口实现构造函数 public UnitOfWork(TDbContext context){_dbContext context ?? throw new ArgumentNullException(nameof(context));_repositories new Dictionarystring, dynamic();}public void Dispose(){Dispose(true);GC.SuppressFinalize(this);}public virtual void Dispose(bool disposing){if (_disposed)return;if (disposing){if (_dbContext ! null){_dbContext.Dispose();_dbContext null;}}_disposed true;}
2、定义SaveChanges和SaveChangesAsync保存方法 public int SaveChanges(){return _dbContext.SaveChanges();}public Taskint SaveChangesAsync(){return _dbContext.SaveChangesAsync();}
3、使用工作单元添加数据最后提交_unitOfWork.SaveChanges() private readonly IUnitOfWork _unitOfWork;public void Add(ApplicationEntity app){//todo_unitOfWork.SaveChanges();}
问题这种方式其实是在最后的时候在一次性提交因此对于自增长ID是无法提前知道的所以如果事务内包含第二步依赖第一步的id的建议可以使用其他类型的id来代替关联。