2009-08-04 7 views
2

私はDLLを作成したいと考えています(DLLはWebサービスからアクセスし、おそらく別のアプリケーションから自動化する必要があります)。DLL内でNHibernateを使用する

このDLL内でNHibernateを使用する可能性はありますか?(自動化によってdllにアクセスすることはできますか?)

私はすでにリッチクライアントアプリケーションでNHibernateを使用していますが、これは非常に便利ですが、これを行うにはapp.configにいくつかの変更を加える必要があります。他のすべてのチュートリアルでは、WebサービスでNHibernateを直接使用しています。それに応じてweb.configを変更しています。

答えて

3

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はこれについていくつかの情報を持っていますが、それは短い側のビットです。

+0

私はFluent NHibernateを使ったことはありませんが、これはうまくいきます。 私は流暢な答えが好きです。私たちは現在マッピング属性を使用していますが、ファイルを生成していますが、他の解決方法がない場合は、あなたの答えは確実に受け入れられます... – bernhardrusch

+0

さらなる調査に感謝します! – bernhardrusch

+0

問題はない、うれしい –

関連する問題