Fluent NHibernate C#.如何使用来自两个不同程序集的表模型(实体)和她的Map类



如何使用来自两个不同程序集的表模型(实体(和她的Map类?如果我把map类放在模型的程序集中,一切都可以,但我需要为洋葱架构使用不同的程序集。我的实体类:

public partial class SP_Quarters   
{
public virtual  int id { get; set; }
public virtual Nullable<byte> active { get; set; }
public virtual string name0_ru { get; set; }
public virtual string name0_uz { get; set; }
}

地图类别:

public SP_QuartersMap()
{
Id(x => x.id);
Map(x => x.active);
Map(x => x.name0_ru);
Map(x => x.name0_uz);
}

和会话工厂:

public ISession OpenSession()
{
ISessionFactory sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildSessionFactory();
return sessionFactory.OpenSession();  

}


解决方案

public ISession OpenSession()
{
ISessionFactory sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>().Add<SP_QuartersMap>())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildSessionFactory();
return sessionFactory.OpenSession();
}
public ISession OpenSession()
{
ISessionFactory sessionFactory = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2012.ConnectionString(ConnectionString))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<SP_Quarters>().Add<SP_QuartersMap>())
.ExposeConfiguration(cfg => new SchemaUpdate(cfg).Execute(false, true))
.BuildSessionFactory();
return sessionFactory.OpenSession();
}

您需要告诉FluentHibernate哪些程序集要从加载映射。映射本身指向包含实体类的程序集,这些程序集使用普通的可组装引用系统,就像任何编译的.Net代码一样。

m.FluentMappings.AddFromAssemblyOf<T>()指定从哪个程序集获取映射。不需要将T指定为实体类之一。

此外,AddFromAssemblyOf)本身只是一种方便的方法,还有其他方法可以定位映射程序集。

最新更新