2009-03-10 3 views
3

典型的財産/列の定義は次のようになりますNHibernate - プロパティ/カラムの長さ属性の設定には何か問題はありますか?

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

私はNHibernateは、行を更新/挿入する前に長さ属性を使用してデータを検証すると仮定しました。残念ながら、それは無効な仮定であるようです。だから、もしNHibernateが長さ属性を使用しているのですか?それは各プロパティのためにそれを設定する意味ですか?

答えて

4

データベース定義sqlの作成に使用します。 SchemaExportクラスを見てください。

1

さらに、this質問を参照して、マッピングから長さをプログラムで引き出すことができます。これはJava Hibernateのためのものですが、NHibernateに変換することができると信じています。

0

はい、Lengthプロパティを設定すると、デフォルトの最大長を超える長さの文字列がある場所とは異なります。

私たちはタイプNVARCHAR(MAX)のカラムを持っています。 lengthプロパティを設定しなかった場合、値の長さが4096文字より大きい場合、NHibernateは文字列値の設定に失敗します。

たちは

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

:-) 2017年だから(この例では、マッピング・バイ・コードを使用していますが、我々はそれが大きな文字列だったことを規定するIPropertyMapper.Typeを使用して同じ結果を得ることができました。

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

さらに明示的に、propertyMapper.Typeオプションを使用しました。

関連する問題