1

ASP.Net MVC アプリケーションで次のランタイム エラーが発生します。

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

アプリケーションで burrow と fluent バイナリを参照しており、次のように Application_Start の Global.asax で burrow を再構成しています。

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);
    }
}

詳細が必要な場合はお知らせください。

ありがとう

4

2 に答える 2

4

最初のアプローチが失敗した理由に答えるためにcfg.AddMappingsFromAssembly()、ターゲットアセンブリをスキャンして、アセンブリに組み込まれている事前構成された埋め込みXMLマッピングファイルを探します。実行時に「Fluently」マッピングを生成しているため、これらのXMLファイルは存在しません。

一方、以下は、定義された「FluentMappings」(つまり、ClassMap <>から派生したもの)を見つけるためにアセンブリを反映し、マッピングを動的に生成して、構成に挿入します。を呼び出すまで、マッピングは存在しませんFluentMappings.AddFromAssembly()

Fluently.Configure(cfg)
    .Mappings(m => m.FluentMappings.AddFromAssembly(assembly))
于 2009-06-13T23:38:22.533 に答える
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();

私の以前のアプローチがうまくいかなかった理由を誰かが知っていますか?

ありがとう

于 2009-06-13T23:13:11.063 に答える