2012-03-20 9 views
2

私はCandidateエンティティを持っていますが、いくつかの関連付けは以下の通りです。私は参照プロパティを持たないビューモデルを持っています。外部キーのプロパティだけです。AutoMapperを使用して、ビューモデルをエンティティにマップし直しています。エンティティを試して保存すると、検証エラーが表示されます。 タイトルフィールドは必須です。私のTitleIdには有効な値がありますが、Titleはまだnullです。私の外部キー参照プロパティが外部キーIDプロパティ値を反映していないのはなぜですか?

public class Candidate 
{ 
... 
    [Required] 
    public string RefNum { get; set; } 

    [ForeignKey("TitleId")] 
    [Required] 
    public Title Title { get; set; } 
    public Guid TitleId { get; set; } 
... 
} 

PS、私はRequired属性は、ここでトラブルを引き起こしているかを確認することができますが、どのように他の私はTitleIdが有効なIDだけでなく、空のGuidでなければならないと主張しているのですか?

答えて

3

[Required]属性を削除します。空のGuid {00000000-0000-0000-0000-000000000000}がデータベース内の有効なuniqueidentifierカラム値である有効なGuidであるため、Guidが空ではないことは、とにかく保証されません。 (Guidnullではないstructです).Guidの正しい値を設定する責任があります。 Guidはヌル可能ではないため、EFは必要に応じて関係を検出します。

代わりに、あなたはまた、エラーを回避するために... ...

context.Configuration.ValidateOnSaveEnabled = false; 

をコンテキストインスタンスの検証をオフにすることができます。また、データアノテーションを使用する代わりに、Fluent API(HasRequired/WithRequired)でマッピングを設定して、検証エラーを回避することもできます。

+1

よろしくお願いいたします。私は一種のものと思っていますが、他の場所ではうまくいきません。 – ProfK

関連する問題