我有一个ASP.NET MVC 4应用程序。它使用Spring.net和Nhibernate 3.2。配置由 xml 文件完成。
最近我进入了 Nhibernate 的Mapping by code新功能。我正在尝试在我当前的应用程序中实现它,因此将配置 ClassMapping 并据此更新方案。
我无法做到这一点,对我的 xml 配置进行了一些更改。
这是我的NHibernate配置
<object id="NHibernateSessionFactory" type="Spring.Data.NHibernate.LocalSessionFactoryObject, Spring.Data.NHibernate32">
<property name="MappingAssemblies">
<list>
<value>CM.Data.NHibernate</value>
</list>
</property>
<property name="DbProvider" ref="DbProvider"/>
<property name="HibernateProperties">
<dictionary>
<entry key="hibernate.connection.provider" value="NHibernate.Connection.DriverConnectionProvider"/>
<entry key="dialect" value="NHibernate.Dialect.MsSql2008Dialect"/>
<entry key="connection.driver_class" value="NHibernate.Driver.SqlClientDriver"/>
<entry key="hbm2ddl.auto" value="update"/>
<entry key="hbm2ddl.keywords" value="auto-quote"/>
<entry key="show_sql" value="true"/>
<entry key="adonet.batch_size" value="0"/>
<entry key="hibernate.current_session_context_class" value="Spring.Data.NHibernate.SpringSessionContext, Spring.Data.NHibernate32"/>
</dictionary>
</property>
<property name="ExposeTransactionAwareSessionFactory" value="true" />
</object>
示例映射类
namespace CM.Data.NHibernate
{
public class DynamicEntityMap : ClassMapping<DynamicEntity>
{
public DynamicEntityMap()
{
Id(x => x.Id);
}
}
public class DynamicEntity
{
public virtual int Id { get; set; }
}
}
它似乎不起作用。未生成表。
我错过了什么吗?我正在考虑覆盖 LocalSessionFactoryObject ,因为它在下面的链接中为 FNH 完成。它对我也有用吗?我不确定它是否会破坏事务管理或其他东西。
请给我一些关于这个问题的见解。
在这种情况下最好的方法是什么?