しかし、この機能は気付かれず、ほとんど文書化されていません。
NHibernateでIDataReader.GetOrdinalの呼び出しキャッシュを有効にするには、hibernate.cfgでオプション「adonet.wrap_result_sets」をtrueに設定する必要があります。
<?xml version="1.0" encoding="utf-8" ?> <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> <!-- other options --> <session-factory name="MySessionFactory"> <!-- other session factory options --> <property name="adonet.wrap_result_sets">true</property> </session-factory> </hibernate-configuration>
FluentNHibernateを使用すると、次のようになります。
var config = Fluently.Configure() .ExposeConfiguration(c => c.SetProperty(Environment.WrapResultSets, "true")) .Database(db) /* other configuration */ .BuildConfiguration();
_ExposeConfiguration_メソッドは、 BuildConfigurationメソッドが呼び出されたときにNHibernate.Cfg.Configurationオブジェクトで呼び出されるアクションを追加します。 したがって、上記のコードは次のようになります。
var config = Fluently.Configure() .Database(db) /* other configuration */ .BuildConfiguration(); config.SetProperty(NHibernate.Cfg.Environment.WrapResultSets, "true");