app.configやweb.configを使わずにコードでNHibernateを設定すると、記述した問題を回避できるはずです。例えば、Fluent NHibernateのFluent Configuration機能を使用してNHibernateを設定し、web.configとhibernate.cfg.xmlの両方の使用を避けることができます。
私は現在、データアクセスレイヤーが別のアセンブリにあり、WebアセンブリにNHibernateへの参照がなく、web.configやhibernate.cfgの変更を必要としないWebアプリケーションでこのアプローチを使用しています。 xmlファイルが使用されました。ここで
は流暢な構成の一例である:
sessionFactory = Fluently.Configure()
.Mappings(x => x
.FluentMappings.AddFromAssemblyOf<FooMap>()
.ConventionDiscovery.AddFromAssemblyOf<BarConvention>()
)
.Database(MsSqlConfiguration.MsSql2005.ConnectionString(x => x
.Database("YourDbName")
.Server(@".\SQLEXPRESS")
.TrustedConnection())
.ShowSql())
.BuildSessionFactory();
更新:
同じ目標は、彼らのプログラム設定の可能性を使用することにより、唯一の標準NHibernateはを使用して達成することが可能でなければなりません。 web.configなどを使用してデータベース接続などを構成する代わりに、セッションファクトリを作成するときにIDictionaryインスタンスをConfiguration.SetProperties()に渡すことができます。
このような何か:ドキュメントの
Configuration config = new Configuration();
IDictionary properties = new Hashtable();
properties["hibernate.dialect"] = "NHibernate.Dialect.MsSql2005Dialect";
// more properties here ...
config.SetProperties(properties);
Chapter 3はこれについていくつかの情報を持っていますが、それは短い側のビットです。
私はFluent NHibernateを使ったことはありませんが、これはうまくいきます。 私は流暢な答えが好きです。私たちは現在マッピング属性を使用していますが、ファイルを生成していますが、他の解決方法がない場合は、あなたの答えは確実に受け入れられます... – bernhardrusch
さらなる調査に感謝します! – bernhardrusch
問題はない、うれしい –