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 映射文件。由于您在运行时“流畅地”生成映射,因此这些 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 回答