当前位置:编程学习 > C#/ASP.NET >>

C#WinForm与Spring.net和NHibernate集成问题

Spring.net版本1.3.2
Nhibernate版本3.2
数据库采用oracle10g
搭建好环境后,开始单元测试可以,后来就报:Spring.Transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction ---> NHibernate.TransactionException: Begin failed with SQL exception ---> System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句

底层的存储是:


public class RepositoryImpl<T> : HibernateDaoSupport,IRepository<T> where T : Entity
    {

        #region IRepository<T> 成员

        public virtual T Load(object id)
        {
            try
            {
                T o = this.HibernateTemplate.Load<T>(id);
                if (o == null)
                {
                    throw new RepositoryException("返回数据对象为空");
                }
                else
                {
                    return o;
                }
            }
            catch (DataAccessException ex)
            {

                throw new RepositoryException("加载数据对象失败", ex);
            }

        }


事务部分采用

<object id="BaseTransactionManager"  type="Spring.Transaction.Interceptor.TransactionProxyFactoryObject,Spring.Data" abstract="true">
    <property name="PlatformTransactionManager" ref="transactionManager"/>
    <property name="TransactionAttributes">
      <name-values>
        <add key="Save*" value="PROPAGATION_REQUIRED"/>
        <add key="Set*" value="PROPAGATION_REQUIRED"/>
        <add key="Finish*" value="PROPAGATION_REQUIRED"/>
        <add key="Update*" value="PROPAGATION_REQUIRED"/>
        <add key="Delete*" value="PROPAGATION_REQUIRED"/>
        <add key="Add*" value="PROPAGATION_REQUIRED"/>
        <add key="Get*" value="PROPAGATION_REQUIRED,readOnly"/>
        <add key="Find*" value="PROPAGATION_REQUIRED,readOnly"/>
        <add key="Load*" value="PROPAGATION_REQUIRED,readOnly"/>
        <add key="*" value="PROPAGATION_REQUIRED"/>
      </name-values>
    </property>
  </object>


麻烦高手指点一下,问题在哪呢 ,跪谢! --------------------编程问答-------------------- 这个。。 没搞过单元测试 --------------------编程问答-------------------- 我也遇到相同的问题,判有人解答一下 --------------------编程问答-------------------- 暂时只能是不引用事务来解决。如
将原来的
<object id="Manager.OmsSupplier" parent="BaseTransactionManager">
    <property name="Target">
      <object type="Service.Implement.OmsSupplierManager, Service">
        <property name="CurrentRepository" ref="Repository.OmsSupplier"/>
      </object>
    </property>
  </object>
改为
<object id="Manager.OmsSupplier" type="Service.Implement.SupplierManager,Service">
    <property name="CurrentRepository" ref="Repository.Supplier"/>
</object> --------------------编程问答-------------------- 还有知道如何解决:Spring.Transaction.CannotCreateTransactionException: Could not open Hibernate Session for transaction ---> NHibernate.TransactionException: Begin failed with SQL exception ---> System.Data.OracleClient.OracleException: ORA-01453: SET TRANSACTION 必须是事务处理的第一个语句 --------------------编程问答-------------------- 您好,那你后来怎么解决的啊?我现在就玉带哦这个问题
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,