【问题标题】:NHibernate create IMAGE instead VarBinary(max)NHibernate 创建 IMAGE 而不是 VarBinary(max)
【发布时间】:2011-10-01 21:22:22
【问题描述】:

我在 MS SQL Server 2008(设置 MsSql2008Dialect)中使用休闲 NHibernate 映射 (NH 3.2):

<class name="Layout" table="Layout" lazy="false"  >
    <cache usage="read-write"/>
    <id name="Id" column="Id" type="Guid">      
                    <generator class="assigned"/>
    </id>
  <version name="ObjectVersion" column="ObjectVersion"/>
    <property name="Key" column="Key" type="String" length="255" not-null="true"  />
    <property name="Value" column="Value" type="BinaryBlob" length="2147483647"  />
    <property name="Created" column="Created" type="Timestamp" not-null="true" optimistic-lock="false" />
    <property name="CreatedBy" column="CreatedBy" type="String" length="255" not-null="true" optimistic-lock="false" />
    <property name="Changed" column="Changed" type="Timestamp" optimistic-lock="false" />
    <property name="ChangedBy" column="ChangedBy" type="String" length="255" optimistic-lock="false" />
    <many-to-one  name="User" class="User" foreign-key="FK_User_Layout" lazy="proxy" fetch="select">
        <column name="UserId"/>
    </many-to-one>
</class>

问题就在这里,对于列值,NHibernate 将创建一个 IMAGE 字段。但我需要 VarBinary(max)。映射有什么问题?

【问题讨论】:

标签: nhibernate sql-server-2008 nhibernate-mapping


【解决方案1】:

从 3.1 版迁移到 3.2 版后,我遇到了同样的问题。 我认为这是一个错误。 我探索了源代码版本 3.1 和 3.2 并发现了一些差异,这些差异改变了 MsSqlDialect* 类的初始化顺序。 我通过创建方言类的后代和覆盖方法“RegisterLargeObjectTypeMappings”来修复它

public class MyMsSql2008Dialect : MsSql2008Dialect
{
    protected override void RegisterLargeObjectTypeMappings()
    {
        base.RegisterLargeObjectTypeMappings();
        base.RegisterColumnType(DbType.Binary, 2147483647, "VARBINARY(MAX)");
    }
}    

【讨论】:

    【解决方案2】:

    试试这个

    <property name="Value">
        <column name="Value" sql-type="varbinary(max)" />
    </property>
    

    【讨论】:

      猜你喜欢
      • 2012-04-26
      • 2010-09-08
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      • 2013-06-17
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多