在业务层中使用事务,很多专家称之为轻量级事务,代码如下,很简单
public class CompanyBusiness
{
private readonly CompanyDao dao = new CompanyDao();
public bool Add(Company company,Rating rating,ref int companyId)
{
TransactionOptions options = new TransactionOptions();
//可以在事务期间读取可变数据,但是不可以修改。可以在事务期间添加新数据
options.IsolationLevel = IsolationLevel.RepeatableRead;
using (TransactionScope scope = new TransactionScope(TransactionScopeOption.Required,options))
{
try
{
dao.Add(company, rating,ref companyId);
if (company.CategoryId != 0)
{
new ServiceCategoryBusiness().UpdateServiceCompanyNumber(company.CategoryId);
}
if (company.AddressId != 0)
{
new AreaBusiness().UpdateServiceCompanyNumber(company.AddressId);
}
//提交事务
scope.Complete();
return true;
}
catch(Exception ex)
{
throw ex;
}
}
}
}
经测试,在失败后会自动回滚.
本文作者:网友 来源: http://blog.csdn.net/huangbomeizi/archive/2010/02/23/5318368.aspx
CIO之家 www.ciozj.com 微信公众号:imciow