我有一个方法说LogErrorA带有来自Spring.Net的[Transaction]属性,我想调用其中的另一个方法(比如LogErrorB),它也有[Transaction]属性,因为我有时需要直接调用它。 LogErrorA调用将在Spring.NET中的一个事务下工作,还是会创建多个事务?
[Transaction]
public virtual void LogErrorA()
[Transaction]
public virtual void LogErrorB()
LogErrorA在LogErrorB内调用。
此外,LogErrorB可以直接调用一次。
答案 0 :(得分:2)
有一些预定义的传播方法,如:Propagation.REQUIRED,Propagation.NEW,Propagation.NESTED等等。但是,如果您没有定义任何传播方法,则默认情况下需要Propagation.REQUIRED
。
Propagation.REQUIRED说:如果任何事务没有运行,那么它将创建新事务,如果在该特定点存在任何事务,那么它将使用该现有事务。
因此,在您从LogErrorA()调用LogErrorB()的情况下,在这种情况下,它不会创建新事务,但它将使用在LogErrorA()方法中创建的相同事务。
如果您仍有任何疑问,请告诉我。
谢谢,