一个业务功能往往不只由一次数据库请求(或者服务调用)实现.为了功能的完整性,我们希望如果该功能执行一半时出错,则撤销前面已执行的改动.在数据库层面上,事务管理实现了这种完整性需求.在ABP中,一个完整的业务功能称为一个工作单元(Unit of Work,简称UoW).工作单元代表一种完整的.原子性的操作.即一个工作单元包含的步骤要么全部被执行,要么都不被执行.如果执行一半时出现异常,则必须讲已执行的步骤还原.通常我们将事务管理实现在工作单元中.下面我们从ABP源码入手研究如何使用工作单元. AB…
为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7517397.html 本篇我们实现数据库的访问.我们将实现两种数据库访问方法来访问一个SQLite数据库--使用NHibernate实现的ORM映射访问和使用Dapper实现的SQL语句访问.然后完成前一篇未完成的CreateTweet和GetTweets接口. 在开始之前,先做一些准备工作,新建Domain层的Module: public class MyTweetDomai…
为了防止不提供原网址的转载,特在这里加上原文链接: http://www.cnblogs.com/skabyy/p/7695258.html 本篇将实现登录.权限控制.日志配置与审计日志的功能.首先我们先实现登录功能,在登录的基础上,通过控权使得只有ID为1988的用户才能创建tweet.最后配置Log4Net日志,并开启审计日志,记录所有Web请求. 简单的界面 为了测试方便,在实现登录功能之前,先简单实现了几个页面: Tweets列表页面 创建tweet页面 登录页面 页面代码没有什么特别的…
点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 通用连接和事务管理方法 连接和事务管理是使用数据库的应用程…
ABP领域层——工作单元(Unit Of work) 点这里进入ABP系列文章总目录 基于DDD的现代ASP.NET开发框架--ABP系列之12.ABP领域层——工作单元(Unit Of work) ABP是“ASP.NET Boilerplate Project (ASP.NET样板项目)”的简称. ABP的官方网站:http://www.aspnetboilerplate.com ABP在Github上的开源项目:https://github.com/aspnetboilerplate 通用…
返回总目录 本篇目录 公共连接和事务管理方法 ABP中的连接和事务管理 仓储类 应用服务 工作单元 工作单元详解 关闭工作单元 非事务的工作单元 工作单元方法调用其它 工作单元作用域 自动保存 IRepository.GetAll()方法 UnitOfWork特性的限制 选项 方法 事件 公共连接和事务管理方法 在使用了数据库的应用中,连接和事务管理是最重要的概念之一.何时打开一个连接,何时开始一个事务,如何释放连接等等. 你可能已经知道,Net使用了连接池.因此,创建一个连接实际上是从连接池中…
环境:Abp1.2 疑问:没有调用工作单元的SaveChanges方法引起的事务提交时机的问题. 例如:有一个应用服务代码如下: public void CreatePhrase(PhraseCreateDto input) {var phrase = Mapper.Map<Phrase>(input); phrase.Id = Guid.NewGuid(); _phraseRepository.Insert(phrase); } 根据用户提交数据插入一条记录,但在方法末未显式调用SaveCh…
文档目录 本节内容: 简介 在ABP中管理连接和事务 约定的工作单元 UnitOfWork 特性 IUnitOfWorkManager 工作单元详情 禁用工作单元 非事务性工作单元 工作单元方法调用另一个方法 工作单元域 自动保存修改 IRepository.GetAll() 方法 UnitOfWork 限制 选项 方法 SaveChanges 事件 简介 在一个使用数据库的应用里,连接和事务是非常重要的,何时打开一个连接,何时开启一个事务,如果释放连接等等.ABP通过工作单元系统管理数据库的连…
ABP在其内部实现了工作单元模式,统一地进行事务与连接管理. 其核心就是通过 Castle 的 Dynamic Proxy 进行动态代理,在组件注册的时候进行拦截器注入,拦截到实现了 Unit Of Work 特性的方法进行操作,在执行完方法之后就会关闭掉工作单元. 其整体流程大概如下: 首先 UOW 相关接口.拦截器等通过 IocManager 注入到 Ioc 容器当中. 监听 Ioc 注册事件,并为其添加方法拦截器. 在拦截器内部使用 using 包裹数据库操作方法,使其成为一个工作单元.…
1.什么是事务? 事务(Transaction)是一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位,是数据库环境中的逻辑工作单位.事务是为了保证数据库的完整性.例如:A给B转账,需要先减掉A的账户余额再加到B的账户上,这两个操作是一个整体,不可能扣掉A的钱不给B加上,或者只给B加没有扣掉A的钱.也就是,一个事务每项任务都必须正确执行.如果有任一任务执行失败,则整个事务就会被终止.此前对数据所作的任何修改都将被撤销. 2.Spring事务控制 JDBC默认有进行事务的处理,但它…