3

モデルのプロパティで[Required]アノテーションを使用せずに、エンティティフレームワークにモデルからヌルとしてマークされたテーブルを生成させることはできますか?EFモデルのプロパティがnullでない[必須]

理由:

オブジェクトは、APIに掲載されており、私は、コントローラにModelState.IsValidをご確認ください。プロパティはサーバサイドで生成され、外部からは来ないと考えられますが、プロパティ[Required]がある場合、ModelState.IsValidはfalseです(その場合はBadRequest(ModelState);と返されます)。

他の方法で列をnullにしないようEFに指示できますか?

もう1つの解決策は、別のオブジェクト(ある種のDTO)がAPIに送られてからマッピングが行われることを期待することだと思います。しかし、このオブジェクトは、この単一のプロパティの保存とまったく同じに見えるでしょう。このようなあなたのDbContextクラスの

+0

ModelBuilderを使用してこれらの属性を定義できるデータアノテーションを使用する代わりに、ModelBuilder/Fluent APIを参照してください。 – benjrb

+3

エンティティを直接受け入れないでください。あなたはそれをするだけで問題を尋ねています。別のクラスを使用し、その値をエンティティクラスのインスタンスにマップします。 –

+0

うん!本当に役に立ちました!私がdto +マッピングを行うかどうかはわかりません。私はそれが良いと感じるかどうか試してみる。流暢なAPI私はおそらくとにかく使用します!ありがとう! – Gustav

答えて

5

使用Fluent APIIsRequired方法:

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    modelBuilder.Entity<YourEntity>().Property(t => t.YourProperty).IsRequired(); 
    base.OnModelCreating(modelBuilder); 
} 
3

私があなただったら、私は、私が最初にDTOを使用し、EFエンティティにそれをマップする、直接エンティティFrameworkのエンティティを使用していないだろうどうして?あなたのDTOとEFエンティティは同じ責任を負いません。

DTO:データ転送オブジェクトですので、データ転送に使用してください。 EFエンティティ:データベースへのモデルバインディングです。

関連する問題