0

我有一个 asp.net 应用程序,它利用了三层:DAL -> IUnitOfWork 接口,它实现了 EntityFramework BLL -> 一组业务逻辑类,其中 evenry 类继承自基本业务逻辑类 UI -> Web 表单

Base business logic class appears like following
public class BasebusinessLogicClass<TEntity>
ctor(IUnitOfWork uow){this.Unit = uow)
public void Insert(T entity) { // add entity on unit context and call SaveChanges}
public void Edit(T entity) { // edit entity on unit context and call SaveChanges}
public void Delete ..// as the above snippet..

正如您在我的代码片段中看到的,每个业务逻辑类都执行“原子”业务操作。每次调用 Insert、Delete、Edit 方法都会调用 SaveChanges()。现在,我需要实现一种事务,其范围必须限制在类上,例如:

public class BusinessTransactionBase 
private collection of BusinessLogicBase;
public void Begin() {..initialize the TransactionScope class of .NET}
public void Commit() {Call Complete methid of transactionScope}
public void Rollback() {Dispose transasctionScope object}
public BusinessObjectBase<T> LoadBusinessObject<T>(){ return business logic base of T entity}

好吧,我正在寻找的是允许仅在事务中加入 businessLogicBase 的私人集合。因此,如果从另一个角度执行类似“PersonLogicBase.Insert(T item).. AND 我的事务将回滚”,则 PersonLogicBase.Insert(T item) 不会受到撤消操作的影响。

据我所知,实现这一目标的唯一方法是在分离的线程上实例化每个 BusinessTransaction 对象,但我会使用更好/更简单的解决方案。

任何想法?

4

1 回答 1

0

工作单元是业务交易。如果您需要在单独的事务中对给定类型执行所有操作,则需要该类型的工作单元的新实例。如果您共享您的工作单元,您也将共享业务交易。

于 2013-03-26T08:46:20.687 回答