我在我的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);
}
}任何帮助将非常感谢,请让我知道,如果你需要更多的细节。
谢谢
发布于 2009-06-13 23:38:23
为了回答最初方法失败的原因,cfg.AddMappingsFromAssembly()将扫描目标程序集,以查找内置于该程序集中的预配置的嵌入式XML映射文件。由于您在运行时“流畅”地生成映射,因此这些XML文件并不存在。
另一方面,下面的代码在程序集上进行反映,以找到您定义的“FluentMappings”(即从ClassMap<>派生的那些),动态生成映射,并将其注入到配置中。在调用FluentMappings.AddFromAssembly()之前,映射不存在
Fluently.Configure(cfg)
.Mappings(m => m.FluentMappings.AddFromAssembly(assembly))发布于 2009-06-13 23:13:11
好的,通过执行以下操作,我已经让它工作了:
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();有人知道为什么我之前的方法不起作用吗?
谢谢
https://stackoverflow.com/questions/969321
复制相似问题