最近在尝试用Nhibernate3.2版本的Mapping-By-Code(代码映射)方式,为每个实体创建一个ClassMapping类,代码如下:
public class AuditableEntityMapping : ClassMapping<A>
{
public AuditableEntityMapping()
{
Id(p => p.Id, map => map.Generator(Generators.Identity));
Property(p => p.CreatedBy, map => map.NotNullable(true));
Property(p => p.CreatedOn, map => map.NotNullable(true));
Property(p => p.UpdatedBy);
Property(p => p.UpdatedOn);
Property(p => p.RecStatus, map => { map.NotNullable(true); });
}
}
如果单独使用Nhibernate是没问题的,但是如果要将Spring.net整合进来作为框架的Ioc容器就不知道怎么进行整合扩展?
之前每个实体对应一个配置文件时,Spring配置文件中只需指定配置文件的命名空间即可。
<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject,Spring.Data.NHibernate">
<property name="DbProvider" ref="DbProvider"/>
<!--如果采用ClassMapping方式,这个地方该如何进行处理-->
<property name="MappingAssemblies">
<list>
<value>Spring.Northwind.Dao.NHibernate</value>
</list>
</property>
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="hibernate.dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
<entry key="hibernate.connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<entry key="hibernate.hbm2ddl.auto" value="create"/>
<entry key="show_sql" value="false" />
</dictionary>
</property>
</object>
在网上找了很久,暂时也没找到解决方案,请博客园的老兄帮忙指点,不胜感激,谢谢!
使用Mapping-By-Code(代码映射)方式,还是需要生成hbm文件的
需要重写LocalSessionFactoryObject类的初始化方法
找下官方文档看看
MappingAssemblies去掉,在Configuration的时候代码加入Conform映射就可以了