5

最初にデータベースでEF 4.1を使用しています。

表の例:

CREATE TABLE dbo.Product(
   [ID] [int] IDENTITY(1,1) not null,
   Title nvarchar(200) not null,
   CreateDate datetime not null default(getdate()),
)

新しい行を追加すると、DateTime 型のオーバーフローに関する例外が発生します。

getdate()データベース設定の が無効です。

フィールドのstoreGeneatePatternプロパティを に設定する必要があります。createdateComputed

EFが手動で設定せずに列を自動的に生成できるようにする方法はありますDateTimeか??

4

2 に答える 2

5

EF がデータベースのデフォルトを使用することはありません。その理由は、エンティティに null 許容できないDateTimeプロパティがあるためです。このプロパティには、デフォルトで .NET のデフォルト値 1.1.0001 が割り当てられています。EF は、その値を割り当てたのか、それとも既定値なのかを認識しないため、この値を常に明示的にデータベースに渡します。null 許容型を使用する場合も同じことが起こりますが、この場合、EF は明示的に null を渡します。どちらの場合も、アプリケーションからの値が挿入コマンドで明示的に渡されない場合にのみ値が適用されるため、データベースからのデフォルト値は適用されません。EF はエンティティからすべての値を明示的に渡します。

于 2012-04-24T07:59:01.767 に答える
1

Productエンティティクラスのコンストラクターでそれを行うことができます。

public class Product{
  public Product(){
     CreateDate =DateTime.Now;
  }
}
于 2012-04-24T05:32:30.717 に答える