1

私はASP.Net MVCアプリケーションでは、次のランタイムエラーを取得しています:ASP.Net MVC&NHibernateはバロウ&流暢NHibernateは

NHibernate.MappingException: No persister for: MyProject.Model.MyDomainObject 

私は自分のアプリケーションでの巣穴と流暢なバイナリを参照していますし、巣穴を再構成していますApplication_StartのGlobal.asaxの中で次のように:

var bf = new BurrowFramework(); 
IFrameworkEnvironment fe = bf.BurrowEnvironment; 
Configuration cfg = fe.GetNHConfig("PersistenceUnit1"); 
cfg.AddMappingsFromAssembly(Assembly.LoadFrom(Server.MapPath("~/bin/MyProject.Data.dll"))); 
fe.RebuildSessionFactories(); 

私は私の人生のためにこれを把握することはできません。私のドメインオブジェクトで流暢なNHibernate AutoPersistenceModelをセットアップすると、すべて正常に動作し、手動で設定された流暢なマップでは機能しません。

次のように私が持っている、単一のマップは次のとおりです。

public class MyDomainObjectMap : ClassMap<MyDomainObject> 
{ 
    public MyDomainObjectMap() 
    { 
     WithTable("my_domain_object"); 
     Id(x => x.Id); 
     Map(x => x.Name); 
     Map(x => x.Description); 
    } 
} 

すべてのヘルプははるかに高く評価されるだろう、あなたはより多くの詳細が必要な場合は私に知らせてください。 [OK]を

おかげ

答えて

0

は、私は次のようにして動作するようにそれを持っている:私の以前のアプローチは機能しなかった理由を

var bf = new BurrowFramework(); 
IFrameworkEnvironment fe = bf.BurrowEnvironment; 
Assembly assembly = Assembly.LoadFrom(Server.MapPath("~/bin/MyProject.Data.dll")); 
Configuration cfg = fe.GetNHConfig("PersistenceUnit1"); 

Fluently.Configure(cfg) 
    .Mappings(m => m.FluentMappings.AddFromAssembly(assembly)) 
    .BuildConfiguration(); 

fe.RebuildSessionFactories(); 

誰でも知っていますか?あなたの最初のアプローチが失敗した理由

おかげ

+0

に呼び出すまでのマッピングは存在しません。 –

+0

こんにちはJason、AddMappingsFromAssemblyは流暢な地図を引くFluent拡張メソッドです。 –

4

が答えるために、cfg.AddMappingsFromAssembly()は、アセンブリに組み込まれた事前設定された、埋め込まれたXMLマッピングファイル用のターゲットアセンブリをスキャンします。実行時に 'Fluently'というマッピングを生成しているので、これらのXMLファイルは存在しません。

以下は、定義された「FluentMappings」(すなわち、ClassMap <>から派生したもの)を見つけるためのアセンブリを反映し、マッピングを動的に生成し、構成に注入します。あなたはちょうどあなたの最後でFluently.Configureプロセスを使用してcfg.AddMappingsFromAssemblyではなく、呼ばれる、あなたのオリジナルのポストでFluentMappings.AddFromAssembly()

Fluently.Configure(cfg) 
    .Mappings(m => m.FluentMappings.AddFromAssembly(assembly))