我创建了一个 .net 应用程序,它使用 NHibernate 2.1.0.4000 连接 SQL 服务器,配置如下。
<nhibernate xmlns="urn:nhibernate-configuration-2.2">
<session-factory>
<property name="connection.provider">NHibernate.Connection.DriverConnectionProvider</property>
<property name="connection.driver_class">NHibernate.Driver.SqlClientDriver</property>
<property name="connection.connection_string">Server=(local);database=MYDB;Integrated Security=SSPI;</property>
<property name="dialect">NHibernate.Dialect.MsSql2008Dialect</property>
<property name="show_sql">false</property>
<property name="proxyfactory.factory_class">NHibernate.ByteCode.Castle.ProxyFactoryFactory, NHibernate.ByteCode.Castle</property>
<!-- Specifying the default schema improves the query execution plan generated by SQL server -->
<property name="default_schema">dbo</property>
<property name="connection.isolation">ReadUncommitted</property>
<!-- Specifying the 2nd level cache -->
<property name="cache.provider_class">NHibernate.Caches.SysCache.SysCacheProvider, NHibernate.Caches.SysCache</property>
<property name="cache.use_second_level_cache">true</property>
<property name="cache.use_query_cache" >true</property>
<mapping assembly="MyAssemply" />
</session-factory>
</nhibernate>
在 Nhibernate 配置中,隔离级别指定为ReadUncommitted
. 但是在建立与数据库的连接时不使用隔离级别。相反,它采用默认的隔离级别ReadCommitted
来继续。进行一些调查后观察到,如果session.BeginTransaction()
在代码中指定了隔离级别,则将隔离级别作为配置值。有没有办法在不设置session.BeginTransaction()
.
请分享你的想法。