0

流暢なnhibernateのすべての例は、そのような(または同様の)呼び出しを行います:

c.AddMappingsFromAssembly(typeof(Product).Assembly);

ここでドメインプロジェクト(「Procuct」クラス)を参照したくないので、tuで「typeof(Product).Assembly」を使用したくありません。通常のNHibernateでは、hbm.xmlファイルを作成し、web.configに次のエントリを作成します。

  <mapping assembly="TestingFluentHN"/>

ただし、このエントリはFluentNHibernateでは機能しません。セッション構築方法でアセンブリを提供するエレガントな方法はありますか?できれば設定ファイルから。

リソース:不要なコード/依存関係のコンテキスト:

static NHSessionManager()
{
    Configuration c = new Configuration();
    //change following to sth that does not need refernce to domain
    c.AddMappingsFromAssembly(typeof(Product).Assembly);
    c.Configure();      
    sessionFactory = c.BuildSessionFactory();
}

私の最初のアイデアは、appSettingsからアセンブリ名を読み取り、それらをロードすることでした。

var assembliesToMap = new List<string>();
foreach (var assemblyName in assembliesToMap)
{
    var assembly = Assembly.LoadFile(assemblyName);
    c.AddMappingsFromAssembly(assembly);
}

しかし、それが私の最後の選択肢です。流暢なnhibernateでsthビルドを探しています。

4

1 に答える 1

1

私はあなたが望むことをする流暢なnhibernateに組み込まれているものを知りません。おそらく、質問の最後に示した方法を使用する必要があります。

アプリケーションがどのようにレイアウトされているかを正しく把握していないかどうかはわかりませんが、全体的な考え方は少し間違っているようです。とにかくセッションをクエリするには、ドメインオブジェクトに依存する必要があります。これは、セッションファクトリの作成と同じアセンブリにある可能性があります。そうでない場合は、依存性注入を使用してセッションマネージャーを提供することを検討してください(ドメインオブジェクトを認識しているプロジェクトから)

何か足りないものがあれば教えてください。

于 2010-06-03T18:25:44.130 に答える