【发布时间】:2014-04-02 14:03:09
【问题描述】:
我有一个 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 完成。它对我也有用吗?我不确定它是否会破坏事务管理或其他什么。
请给我一些关于这个问题的见解。
在这种情况下最好的方法是什么?
【问题讨论】:
-
你想达到什么目的? “表未生成”是什么意思?
-
我的意思是,我的数据库方案是根据映射更新的。
标签: c# spring-mvc nhibernate spring.net mapping-by-code