1

我有一个ASP.NET MVC 4应用程序。它使用Spring.netNhibernate 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 完成。它对我也有用吗?我不确定它是否会破坏事务管理或其他东西。

请给我一些关于这个问题的见解。

在这种情况下最好的方法是什么?

在 Spring.Net 中使用 Fluent NHibernate

4

1 回答 1

1

Spring .Net 目前不支持,您可以在此处看到

您可以尝试Marijn implementation,这应该可以正常工作而不会破坏任何东西。

于 2014-03-03T05:51:52.217 回答