7

私のエンティティ クラスの 1 つは、BIGINT として SQL Server データベースに格納できます。私の質問は、エンティティ クラスのインスタンスを格納および取得する方法を知るために、Entity Framework コンテキストを取得するにはどうすればよいですか?

もっと詳しく。私はNoda Timeを使用しています。これは、SQL または .NET の datetime よりも (はるかに) 広い範囲の日付を表すことができます (そして、デザートのトッピングです)。私のエンティティ クラスである Happening は、NodaTime の Instant クラスのラッパーです。.SetFromLong(long instant) や .ToLong() などのメソッドを使用して、ロングからハプニングを設定し、ハプニングからロングを取得できます。

現在、モデルが機能しており、ドット ネット DateTime 型のプロパティを含むクラスを保存しています。代わりに、カスタム タイプ "Happening" のプロパティを使用したい場合、それらを保存する方法を Entity Framework に指示するにはどうすればよいですか?

モデリングとマッピングに関するこの記事を読んでいる場合、私は正しい道を進んでいますか、それとも単純なものを見逃していますか?

http://msdn.microsoft.com/en-us/library/bb896343.aspx

エンティティ フレームワーク 4 を使用しています。

4

1 に答える 1

7

私がお勧めするのは、エンティティに NodaTime と long の 2 つのプロパティを追加し、EF モデルで [NotMapped] を使用して NodaTime プロパティを除外し、getter/setter で long を更新することです。

すなわち

public class MyEntity{
   public long TimeAsLong{get;set;}
   [NotMapped]
   public Happening {
      get{
        return new Happening().SetFromLong(TimeAsLong);
      }
      set {
         TimeAsLong = value.ToLong();
      }
   }
}

これの効果は、ロングがデータベースに格納されることですが、 NodaTime を介してクラスでアクセスできます

于 2012-02-26T09:11:15.110 に答える