9

エンティティフレームワーク5.0プロジェクトでは、SQL Server 2008でコードを初めに移行していますが、データベースにはすべてdatetime列で作成された日付プロパティがあります。Enitity Framework/SQL Server 2008プロジェクトでdatetime2に切り替える方法

データベース内のすべてのdatetime列を更新する追加移行を使用して移行を作成することはできますか?どこにでもdatetime2に切り替える他の簡単な方法はありますか?

+0

[Entity Framework 5でdatetime2データ型を使用する](https://stackoverflow.com/questions/15248488/force-entity-framework-5-to-use-datetime2-data-type) – hazzik

答えて

8

流動性のあるAPIを使用して、DB内にdatetime2列を強制的に作成することができます。

私はこれが見つかりました:あなたがアイデアを得ることができるはず

Using DateTime properties in Code-First Entity Framework and SQL Server

を。

既存のDBに固執する必要がある場合は、カスタムT-SQLコードを実行する移行を作成する必要があります。例はここにあります:

http://msdn.microsoft.com/en-us/data/jj591621.aspx

+0

ありがとうFloremin。私は実際にカスタムSQLを使用して移行を作成できます。スイッチを自動化する方法はありますか?将来新しいDateプロパティにdatetime2を使用するようにコードに指示する方法はありますか? – mykola

+0

私は最初のリンクがそれを正確に説明していると思います。 Fluent APIは、デフォルトのコードファースト動作をカスタマイズする方法です。 – Floremin

23

これは古い記事ですが、DATETIME2にすべての日時列を切り替えたい場合は、あなたがEFを作り、他の言葉で(追加した新しい列に対してDATETIME2使用します)デフォルトではDATETIME2使用し、あなたの状況にOnModelCreatingメソッドにこれを追加することができます。

modelBuilder.Properties<DateTime>().Configure(c => c.HasColumnType("datetime2")); 

は、すべてのDateTimeと日時を取得すること?モデル内のすべてのエンティティのプロパティ

+0

すばらしい解決策! – arche89

+0

IIRCこれはEF6のみです。 –

+0

はい、これはEF6のみですが、EF5(EF5を使用している場合は6にアップグレードしてください)でも動作する可能性があります。EF7/EFコアはEF6と大幅に異なる実装であり、EF4 /これかどうか。 –

関連する問題