「Bag」によってマップされた「IList<>」を含むオブジェクトで DAO の Save() を 2 回呼び出すと、「コレクションを 2 つの開いているセッションに関連付ける不正な試み」という例外が発生します。
public abstract class AbstractGenericDao<TEntity> : HibernateDaoSupport, IAbstractGenericDao<TEntity>
{
[Transaction]
public TEntity Save( [NotNull] TEntity entity )
{
HibernateTemplate.Save( entity );
}
}
2 つの SessionFactory を使用しています
<!-- NHibernate Configuration -->
<object id="NHibernateSessionFactory" abstract="true" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="HibernateProperties">
<dictionary>
<entry key="connection.provider" value="${connection.provider}" />
<entry key="connection.driver_class" value="${hibernate.driver}" />
<entry key="dialect" value="${hibernate.dialect}" />
<entry key="hbm2ddl.auto" value="${hibernate.hbm2ddl}" />
<entry key="show_sql" value="${hibernate.show_sql}" />
</dictionary>
</property>
</object>
<!-- NHibernate Session Configuration -->
<object id="NHibernateSessionFactory_1" parent="NHibernateSessionFactory" >
<property name="DbProvider" ref="DbProvider_Main" />
<property name="MappingAssemblies">
<list>
<value>DomainModel</value>
</list>
</property>
<property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>
<!-- NHibernate Session Configuration -->
<object id="NHibernateSessionFactory_2" parent="NHibernateSessionFactory" >
<property name="DbProvider" ref="DbProvider_Exam" />
<property name="MappingAssemblies">
<list>
<value>DomainModel</value>
</list>
</property>
<property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>
および「TxScopeTransactionManager」:
<object id="transactionManager" type="Spring.Data.Core.TxScopeTransactionManager, Spring.Data">
<property name="TransactionSynchronization" value="Always"/>
</object>
誰でも私を助けることができますか?