2011-09-14 7 views
5

私はdb(SQL Server 2008 R2)をモデル化したクラス(DbContext)を生成しています。標準ModifiedDateおよびCreatedDate(Nullなし)。これらのそれぞれは、SQLServerでデフォルトのgetdate()を持っています。私は、どの更新でもModifiedDateを更新するためのトリガを持っています。MVC 3の日付の作成と変更にはSQL Server 2008 R2のデフォルト値とトリガーがありますが、依然として値が必要です

生成されたビューには、私が望んでいない(これらは表示しないでください)ModifiedDateフィールドとCreatedDateフィールドが含まれていますので、これを取り出しましたが、生成されたCreateビューを使用して新しいエントリを追加すると、 「datetime2データ型からdatetimeデータ型への変換が範囲外の値になった」というエラーが表示されます。

私はいくつかのデフォルト値を追加してレコードを追加しましたが、当然のことながら、私が望むSQLのgetdate()値ではなく、 。オブジェクト(db.SaveChanges())をチェックすると、フィールドの値は{1/01/0001 12:00:00 AM}になります。

日付を入力しないでこれらのモデルを使用するにはどうすればいいですか?モデルにはないLINQのツーSQLで

:私は、これはSQLにEntity FrameworkのLINQのと両方で共通の問題です... ;-(

答えて

4

を検索したが、私の答えを見つけることができますデフォルトの値を知っているので、 "null"として割り当てようとします - この場合は受け入れられません。これを修正するには、DBMLファイルを開き、フィールドの "Auto Generated Value"オプションを "true"に設定します。質問Entity Frameworkので

にそれは少し違う:あなたは、「同一性」または「計算」のいずれかにフィールド上の「StoreGeneratedPattern」を設定ここで説明です:。

http://msdn.microsoft.com/en-us/library/system.data.metadata.edm.storegeneratedpattern.aspx

EFはIDタイプフィールドでこれを自動的に行いますが、デフォルト値/非ヌルフィールドでは行いません。 CreatedDateを「ID」(挿入時にのみ更新)およびModifiedDateを「計算済み」(挿入および更新時に更新)として設定できます。

これの副産物は、Linqを使ってフィールドを設定することができなくなるということですが、あなたのユースケースでは問題ありません。

+0

ありがとう、ありがとうございました。私たちはこれがあなたのポストの直前の解決策であることを発見しましたが、Entity Frameworkには、これらの設定がとにかく拾われていないというバグがあります。 VS2010 SP1ではこのバグが修正され、SP1を実行していないことが判明しました。今すぐすべて良い、あなたの助けに感謝! – Daryl

関連する問題