Entity Framework Code Firstを使用する場合、デフォルトの規則では、必要なデータベースタイプが作成されません。たとえば、デフォルトではSystem.DateTime
のプロパティは、DateTime
のデータベース列を作成します。 datetime2
(タイムゾーンと夏時間に問題がないタイプのDateTime
)を使用する場合はどうすればよいですか?エンティティフレームワークコードファースト:DateTime2のどのDataType属性?
DataTypeAtrribute
を使用して、データ注釈で必要なデータベースタイプを指定することができます。 DataTypeAttributeのコンストラクタの1つは、パラメータDataType Enumerationを受け取ります。しかし、それはDateTime2
の値が欠落している、データ型の列挙型は種類が多く含ま
[DataType(DataType.DateTime)]
public DateTime DateOfBirth {get; set;}
:だから1は次のようなものを指定することができます。
もう1つのアプローチは、Fluent APIを使用することです。方法DBContext.OnModelCreatingでDateTime2
を作成します。
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<Student>().Property(p => p.BirthDate)
.HasColumnType("datetime2");
}
DataTypeAttributeがsecond constructor that accepts a stringを持っています。この文字列は次のように定義されます
データフィールドに関連付けるカスタムフィールドテンプレートの名前。
だから、1は次のDATETIME2を作成するのに十分だろうことを前提としています:
[DataType("datetime2")]
public DateTime DateOfBirth {get; set;}
ああ、これは動作しません。作成された列はまだDateTime
の形式です。
質問:datetime2を作成するためにコンストラクタで使用する文字列はどれですか?