【转】Castle.ActiveRecord的嵌套事务处理

嵌套的情况下,怎么处理Castle.ActiveRecord的事务?

今天试了一下,原来还是很简单的,只需要使用Castle.ActiveRecord.TransactionMode.Inherits就可以了。

http://www.castleproject.org/activerecord/documentation/trunk/usersguide/scopes.html

protected void btnInsert_Click(object sender, EventArgs e)

{

    Insert(3);

    InsertOne();

}

private void InsertOne()

{

    TransactionScope scope = new TransactionScope(Castle.ActiveRecord.TransactionMode.Inherits);

    try

    {

    Blog blog = new Blog();

    blog.Name = "blog1";

    blog.Author = "Author";

    blog.Create();

    Insert(2);

    int a = 0;

    a = 100 / a;

    scope.VoteCommit();

    }

    catch

    {

    scope.VoteRollBack();

    throw;

    }

    finally

    {

    scope.Dispose();

    }

}

private void Insert(int i)

{

    TransactionScope scope = new TransactionScope(Castle.ActiveRecord.TransactionMode.Inherits);

    try

    {

    Blog blog = new Blog();

    blog.Name = "blog" + i;

    blog.Author = "Author" + i;

    blog.Create();

    scope.VoteCommit();

    }

    catch

    {

    scope.VoteRollBack();

    throw;

    }

    finally

    {

    scope.Dispose();

    }

}

  

【转】Castle.ActiveRecord的嵌套事务处理

时间: 2024-09-30 06:55:15

【转】Castle.ActiveRecord的嵌套事务处理的相关文章

Castle.ActiveRecord 多对多关系 引发的错误处理

在Castle.ActiveRecord 实体类中,如果两个对象有 “多对多” 关系,一般的做法是将其分解为 两个“一对多”关系,但有时引发了 “您要删除 或 引用 的对象#2在数据库中不存在”的异常 百思不得其解,同样的用法在“媒体引用”中一直都是正常的,为什么在“专题引用” 和“ Web栏目引用” 中就出现异常呢? 通过遍历代码发现了细微的差别: 在“媒体”的业务对象加载时,为了判断一个对象是否可以删除,常查询其被引用的 次数是多少,使用的方法是:DALMediaReference.Find

Castle.ActiveRecord多数据库配置

最近使用Castle.ActiveRecord框架,网上关于多数据支持的文章很少,因此有了这篇博文的产生. 开发工具VS2015,Sql Server2008R2 新建数据库,数据初始化脚本如下: 1 --新建数据库Castle.ActiveRecord.DB1 2 CREATE DATABASE [Castle.ActiveRecord.DB1]; 3 GO 4 5 USE [Castle.ActiveRecord.DB1] 6 GO 7 /****** Object: Table [dbo]

Castle ActiveRecord学习(一)

简介 来源:http://www.cnblogs.com/zxj159/p/4082987.html 一.Active Record(活动记录)模式 Active Record是业务逻辑层中(<企业应用架构模式>将该模式归为数据源模式)常用的一种框架模式,尤其在底层数据库模型匹配业务模型时它特别有用,它是一种以数据库驱动为主的框架模式. 通常,数据库中的每张表都对应一个业务对象.业务对象表示表中的一行,并且包含数据.行为以及持久化该对象的工具,此外还有添加新实例和查找对象集合所需的方法. 在A

castle activerecord 学习过程出现的问题

优点: 1.CRUD:代码简洁 2.不用配置map 3.自带事务方便 4.自带IOC 5.自带 数据有效性验证 缺点: 1.自增长(Oracle 一直提示序号不存在,有空继续尝试) 2.多条件,直接用 HQL写在类里,或者将条件写在  Model字段定义里,太过硬性 3.CRUD 每个出错直接异常,每个语句必须  try catch 4.比较方便的CRUD ,删除多个.修改多个.则需要用到 HQL,问题如2. 5.实体模版生成器 Castle.ActiveRecord.Generator.exe

Castle ActiveRecord框架学习(一)

一.Active Record(活动记录)模式 Active Record是业务逻辑层中(<企业应用架构模式>将该模式归为数据源模式)常用的一种框架模式,尤其在底层数据库模型匹配业务模型时它特别有用,它是一种以数据库驱动为主的框架模式. 通常,数据库中的每张表都对应一个业务对象.业务对象表示表中的一行,并且包含数据.行为以及持久化该对象的工具,此外还有添加新实例和查找对象集合所需的方法. 在Active Record模式中,每个业务对象均负责自己的持久化和相关的业务逻辑. Active Rec

Castle ActiveRecord学习笔记三:初始化配置

在使用Castle ActiveRecord的时候,需要两种方式来进行初始化,一种就是通过配置文件,另外一种就是将初始配置进行硬编码,写到程序中来. 当然,一般来说,利用配置文件来进行将会大大简化后期维护,我们首先在程序中添加一个App.config的配置文件,记住,一定要将这个配置文件的生成操作设置为"嵌入的资源"才行.否则会提示如学习笔记二中所出现的问题. 具体的配置如下: <?xml version="1.0" encoding="utf-8&

[掌眼]解决Castle.ActiveRecord在ASP.NET或WCF环境中HttpContext.Current无效的错误

AR設定檔要指定threadinfotype,不指定的話,預設值是用WebThreadScopeInfo,是用 HttpContext.Current.Items 來存放 SesionScope,所以碰到與UI無關的執行緒,沒有 HttpContext.Current 程式就掛啦. 解决方案一: 1.检查“web.config” <activeRecord isWeb="true" isDebug="false"> <config>... .

Castle ActiveRecord框架学习(二):快速搭建简单博客网站

一.数据库 1.数据表 Category:类别标签表(字段Type=1为类别,Type=2为标签) Category_Post:类别标签与文章中间表 Post:文章表 Comment:评论表 2.数据库关系图 3.简单说明 Category和Post表为多对多关系 Post和Comment表 为一对多关系 二.实体类 1.Category类: // 指定数据表,Lazy为延迟加载 [ActiveRecord("Category",Lazy=true)] public class Cat

Castle.ActiveRecord环境配置

在VS Nuget包管理器中将Castle.ActiveRecord下载到项目中 在项目中的app.config中添加如下配置节点 <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <section name="activerecord" type="Castle.ActiveRecord.Frame