2009-06-03 10 views
6

こんにちは私はormとしてnhibernateを使用するアプリケーションを持って、私は時間を表すデータを格納する必要があります それを行うには最高の方法は何ですか?時間とNhibernate

nhibenateは、dbからtimepanに変換することはできません。文字列のみです。

答えて

7

NHibernate support DateTime, Ticks, TimeSpan and Timestamp。 NHibernateが推測しているものが正しくないかもしれないように、異なった時間型が異なるセマンティクスを持つので、マッピング要素に型を明示的に指定していることを確認してください。

問題が解決しない場合は、エンティティの関連部分、マッピングファイル、および実際に発生している問題を含めるように投稿を変更してください。

編集:例えば

TimeSpanのための次のクラスを持つ:

public class MyClass 
{ 
    // Other properties 
    // ... 
    // ... 
    public virtual TimeSpan MyTimeProperty { get; set; } 
} 

とマッピングファイル:あなたがしようとしていることを示している

<!-- other properties --> 
<property name="MyTimeProperty" type="TimeSpan" /> <!-- Note: NH expects the DB type to be DbType.Int64 --> 

TimeSpanをマップします(「nhibenateはdbからtimepanに時間フィールドを変換することは知らず、文字列のみ」)。これが.NET(typeofTimeSpan)とデータベース(DbType.Int64)の間で一致する正しいタイプである場合、NHはこれを自動的に行う必要があります。すなわち、type="TimeSpan"を指定する必要はありません。それが機能しない場合、私はあなたが物事をセットアップする方法に問題があると思う。完全な署名付きプロパティ/フィールド宣言、マッピングファイルのこのプロパティの<property>行、およびデータベースの列定義を投稿すると便利です。

+0

私は流暢なnhibernateでタイプを指定する必要がありますか? –

2

また、データベースでNULLに設定できるDateTimesにnullablesを使用することを確認してください。

DateTime?ちょうどDateTimeの代わりに。

もしそうでなければ、NHibernateはあなたの望むものではないデフォルト値に日付を初期化しようとします。

関連する問題