HTML5技术

【.Net设计模式系列】工作单元(Unit Of Work)模式 ( 二 ) - Spacebar(3)

字号+ 作者:H5之家 来源:博客园 2016-02-17 18:00 我要评论( )

UnitOfWork:IUnitOfWork 2 { 注入对象 IUnitOfWorkContext context; 维护一个Sql语句的命令列表 ListCommandObject commands; UnitOfWork(IUnitOfWorkContext context) 14 { 15 commands = new ListCommandObject (

UnitOfWork:IUnitOfWork 2 { 注入对象 IUnitOfWorkContext context; 维护一个Sql语句的命令列表 List<CommandObject> commands; UnitOfWork(IUnitOfWorkContext context) 14 { 15 commands = new List<CommandObject>(); 16 this.context = context; 17 } 增、删、改命令 Command(string commandText, IDictionary<string, object> parameters) 26 { 27 IsCommited = false; 28 commands.Add(new CommandObject(commandText, parameters)); ; 30 } 提交状态 IsCommited{ get; set; } 提交方法 Commit() 42 { 43 if (IsCommited) { return ; } 44 using (TransactionScope scope = new TransactionScope()) 45 { 46 foreach (var command in commands) 47 { 48 context.ExecuteNonQuery(command.command, command.parameters); 49 } 50 scope.Complete(); 51 IsCommited = true; 52 } 53 } 事务回滚 RollBack() 59 { 60 IsCommited = false; 61 } 62 }

最后定义工作单元对事务提交处理的上下文及其实现,同仓储模式中的代码。

IUnitOfWorkContext 2 { 注册新对象到上下文 ExecuteNonQuery(string commandText, IDictionary<string, object> parameters = null); 查询对象集合 List<T> ReadValues<T>(string commandText, IDictionary<string, object> parameters = null, Func<IDataReader, T> load = null) where T : class, new(); 查询对象集合 List<object> ReadValues(string commandText, Type type, IDictionary<string, object> parameters = null, Action<dynamic> setItem = null); 查询对象 T ExecuteReader<T>(string commandText, IDictionary<string, object> parameters = null, Func<IDataReader, T> load = null) where T : class,new(); 查询数量 ExecuteScalar(string commandText, IDictionary<string, object> parameters = null); 48 }

最后实现。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    HTML5 进阶系列:拖放 API 实现拖放排序 - _林鑫

    2017-05-02 11:02

  • Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

    Dora.Interception: 一个为.NET Core度身定制的AOP框架 - Artech

    2017-05-02 11:00

  • 如何在 ASP.NET Core 中发送邮件 - Savorboard

    如何在 ASP.NET Core 中发送邮件 - Savorboard

    2017-05-02 08:02

  • JS组件系列——自己动手封装bootstrap-treegrid组件 - 懒得安分

    JS组件系列——自己动手封装bootstrap-treegrid组件 - 懒得安分

    2017-04-28 14:02

网友点评
v