我正在使用NHibernate 4,我有一个简单的SQL Server数据库,其中包含一些表:if { hdr(Host) -m reg -i ^project-.*$ }
,if { hdr(Host) -m beg -i project- }
等...
NHibernate mapping classes and hbm files
我有以下助手类:
Orders
当它只包含
时,该类工作正常Products
问题是我调用public class NHibernateHelper
{
private static ISessionFactory _sessionFactory;
private static ISessionFactory SessionFactory
{
get
{
if (_sessionFactory == null)
{
var configuration = new Configuration();
configuration.Configure();
configuration.AddAssembly(typeof(Orders).Assembly);
/*configuration.AddAssembly(typeof(Products).Assembly);*/
_sessionFactory = configuration.BuildSessionFactory();
}
return _sessionFactory;
}
}
}
方法添加第二个表映射类,如configuration.AddAssembly(typeof(Orders).Assembly);
。
我收到错误:
无法编译映射文档:StockManager.DBMapping.Orders.hbm.xml
我的问题是:如何为另一个表调用AddAssembly
方法?
答案 0 :(得分:0)
我建议使用FluentNhibernate代替xml映射。
var sessionFactory = Fluently.Configure()
.Database(/* database config */)
.Mappings(m =>
m.AutoMappings
.Add(AutoMap.AssemblyOf<Products>())
.Add(AutoMap.AssemblyOf<Orders>())
)
.BuildSessionFactory();
您也可以使用自动映射通用基类。一个例子是使用单个泛型参数来指示Id类型。
public abstract class BaseEntity<T>
{
public T Id { get; private set; }
}
public class Product : BaseEntitiy<int>
{
//do stuff
}
使用这种基类时,您只需要像任何其他基类一样忽略它。
AutoMap.AssemblyOf<Entity>()
.IgnoreBase(typeof(BaseEntity<>));