我有一个使用NHibernate Auto Mapping的应用程序......到目前为止一切正常......
My Fluent Global.asax config:
private void InitializeNHibernateSession()
{
NHibernateSession.Init(
webSessionStorage,
new string[] { Server.MapPath("~/bin/Proj.Data.dll") },
new AutoPersistenceModelGenerator().Generate(),
Server.MapPath("~/NHibernate.config"));
}
但我需要用Fluent映射映射一个类......我创建了类:
namespace Proj.Data.NHibernateMaps
{
public class CategoryMap : IAutoMappingOverride<Category>
{
public void Override(AutoMapping<Category> mapping)
{
mapping.Id(x => x.Id)
.GeneratedBy.Identity();
mapping.Map(x => x.Description);
mapping.Map(x => x.UrlName);
mapping.References(x => x.ParentCategory)
.Not.LazyLoad();
}
}
}
问题是这个映射从未被NHibernate使用过...而是使用自动映射生成的类别......
如何使用我的Fluent Mapping?
由于
保
答案 0 :(得分:4)
无论您在何处配置AutoPersistenceModel,都需要引用映射覆盖。我发现最简单的方法是将它指向包含映射覆盖的程序集,并让它发现所有这些。这样你可以添加新的IAutoMappingOverride实现,它将自动被选中。您可以使用UseOverridesFromAssemblyOf扩展方法执行此操作。
public class AutoPersistenceModelGenerator {
public AutoPersistenceModel Generate() {
return AutoMap.AssemblyOf<Category>()
.UseOverridesFromAssemblyOf<CategoryMap>();
}
}