[英]NHibernate: How to add more than one assembly?
我正在使用NHibernate 4,我有一个简单的SQL Server数据库,其中包含一些表: 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);
问题是当我调用AddAssembly
方法添加第二个表映射类(如Products
。
我收到一个错误:
无法编译映射文档:StockManager.DBMapping.Orders.hbm.xml
我的问题是:如何为另一个表调用AddAssembly
方法?
我建议使用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<>));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.