【问题标题】:NHibernate - is there any point in setting length attribute for properties/columns?NHibernate - 为属性/列设置长度属性有什么意义吗?
【发布时间】:2009-03-10 20:21:46
【问题描述】:

属性/列的定义通常如下所示:

<property name="DocumentSummary" column="DocumentSummary" length="100" type="String">
   <column name="DocumentSummary" />
</property>

我假设 NHibernate 将在插入/更新行之前使用长度属性验证数据。不幸的是,这似乎是无效的假设。所以问题是 NHibernate 是否对任何东西使用长度属性?为每个属性设置它是否有意义?

【问题讨论】:

    标签: nhibernate nhibernate-mapping


    【解决方案1】:

    它使用它来创建数据库定义sql。查看 SchemaExport 类。

    【讨论】:

      【解决方案2】:

      您还可以通过编程方式从映射中提取长度,请参阅this 问题。请注意,这是针对 Java Hibernate,但我相信您可以将其转换为 NHibernate。

      【讨论】:

        【解决方案3】:

        是的,设置 Length 属性会使字符串列的长度超过默认最大长度的情况有所不同。

        我们有一个NVARCHAR(MAX) 类型的列。如果我们没有设置 length 属性,那么如果字符串值的长度大于 4096 个字符,NHibernate 将无法设置该值。

        (此示例使用 Mapping-By-Code,因为我们在 2017 年 :-)

        classMapper.Property(
                                tickerFeed => tickerFeed.StaticTickerText,
                                propertyMapper =>
                                {
                                     propertyMapper.Column("StaticTickerText");
                                     propertyMapper.Length(int.MaxValue);
                                }
                            );
        

        但是,我们发现我们可以使用IPropertyMapper.Type 来规定它是一个大字符串,从而获得相同的结果。

        classMapper.Property(
                                tickerFeed => tickerFeed.StaticTickerText,
                                propertyMapper =>
                                {
                                     propertyMapper.Column("StaticTickerText");
                                     propertyMapper.Type(NHibernateUtil.StringClob);
                                }
                            );
        

        我们最终选择了propertyMapper.Type 选项,因为它更明确。

        【讨论】:

          猜你喜欢
          • 2011-06-04
          • 2017-03-22
          • 1970-01-01
          • 2013-07-03
          • 1970-01-01
          • 2011-07-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多