使用Fluent NHibernate(S#arp体系结构)在自动映射和Fluent映射之间进行选择
我有一个应用程序使用NHibernate自动映射。。。到目前为止一切正常 My Fluent Global.asax配置:使用Fluent NHibernate(S#arp体系结构)在自动映射和Fluent映射之间进行选择,nhibernate,fluent-nhibernate,s#arp-architecture,Nhibernate,Fluent Nhibernate,S#arp Architecture,我有一个应用程序使用NHibernate自动映射。。。到目前为止一切正常 My Fluent Global.asax配置: private void InitializeNHibernateSession() { NHibernateSession.Init( webSessionStorage, new string[] { Server.MapPath("~/bin/Proj.Data.dll") }, new AutoPersi
private void InitializeNHibernateSession()
{
NHibernateSession.Init(
webSessionStorage,
new string[] { Server.MapPath("~/bin/Proj.Data.dll") },
new AutoPersistenceModelGenerator().Generate(),
Server.MapPath("~/NHibernate.config"));
}
但是我需要用流畅的映射来映射一个类。。。我创建了这个类:
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();
}
}
}
namespace Proj.Data.NHibernateMaps
{
公共类类别映射:IAutoMappingOverride
{
公共无效替代(自动映射)
{
mapping.Id(x=>x.Id)
.GeneratedBy.Identity();
Map.Map(x=>x.Description);
Map.Map(x=>x.UrlName);
mapping.References(x=>x.ParentCategory)
.Not.LazyLoad();
}
}
}
问题是NHibernate从未使用此映射。。。相反,它使用自动映射生成的类别
如何使用Fluent映射
谢谢
Paul无论在何处配置AutoPersistenceModel,都需要引用映射覆盖。我发现最简单的方法是将它指向包含映射覆盖的程序集,让它发现所有映射覆盖。通过这种方式,您可以添加新的IAutoMappingOverride实现,它将被自动拾取。您可以使用UseOverridesFromAssemblyOf扩展方法执行此操作
public class AutoPersistenceModelGenerator {
public AutoPersistenceModel Generate() {
return AutoMap.AssemblyOf<Category>()
.UseOverridesFromAssemblyOf<CategoryMap>();
}
}
公共类自动持久性模型生成器{
公共自动持久性模型生成(){
返回AutoMap.AssemblyOf()
.UseOverridesFromAssemblyOf();
}
}
无论在何处配置AutoPersistenceModel,都需要引用映射覆盖。我发现最简单的方法是将它指向包含映射覆盖的程序集,让它发现所有映射覆盖。通过这种方式,您可以添加新的IAutoMappingOverride实现,它将被自动拾取。您可以使用UseOverridesFromAssemblyOf扩展方法执行此操作
public class AutoPersistenceModelGenerator {
public AutoPersistenceModel Generate() {
return AutoMap.AssemblyOf<Category>()
.UseOverridesFromAssemblyOf<CategoryMap>();
}
}
公共类自动持久性模型生成器{
公共自动持久性模型生成(){
返回AutoMap.AssemblyOf()
.UseOverridesFromAssemblyOf();
}
}