私は最初にデータベースでEF4.1を使用しています。
表の例:
CREATE TABLE dbo.Foo(
[ID] [int] IDENTITY(1,1) NOT NULL,
Created datetime not null default(getdate()),
Title varchar(80) not null
PRIMARY KEY CLUSTERED ([ID] ASC)
)
EFは、nullable=falseとして3列すべてのモデルを正しくロードします。
コード生成アイテム「ADO.NETDbContextGenerator」からの出力:
public partial class Foo
{
public int ID { get; set; }
public System.DateTime Created { get; set; }
public string Title { get; set; }
}
FooController
MVC3では、dbコンテキストとfooモデルを介してviaを生成します。/ Foo / Createを起動し、空白のフォームで[Create]をクリックすると、[Created]フィールドに検証エラーが表示されますが、[Title]には表示されません。
「作成された」日付のみを入力すると、例外が発生します。
1つ以上のエンティティの検証に失敗しました。詳細については、「EntityValidationErrors」プロパティを参照してください
例外は「タイトルフィールドは必須」です。
なぜ一方の列ではうまく機能するのに、もう一方の列ではうまく機能しないのかわかりません。私の最初の修正は単に注釈を追加することでしたが、クラスコードはEFによって自動生成されます。
動作していると思われる唯一の修正は、部分的なメタデータクラスを使用することです。ASP.NETMVC3-EFデータベースファースト(ObjectConext、DbContext)によるデータ注釈
必要に応じて[必須]タグを追加できますが、これは不要です。これはEFのバグですか、それとも何かが足りないだけですか?