1

これが言語のリストを含む私のマスターエンティティです

public partial class WebSite
    {
        public WebSite()
        {
            this.WebSiteLanguages = new HashSet<WebSiteLanguage>();
        }

        public int Id { get; set; }
        public Nullable<int> WLUserID { get; set; }
        public string DomainName { get; set; }
        public Nullable<bool> IsActive { get; set; }
        //[Required]       
        public virtual ICollection<WebSiteLanguage> WebSiteLanguages { get; set; }
    }

私のWebSiteLanguage子クラスは

public partial class WebSiteLanguage
    {
        public int Id { get; set; }
        public string LanguageName { get; set; }
        public Nullable<int> WebSiteID { get; set; }
        public bool IsDefault { get; set; }

        public virtual WebSite WebSite { get; set; }
    }

私のビューでは、ajax呼び出し内で必要に応じて多くの言語を追加できます。

ここに画像の説明を入力してください

私の質問は:
を作ることは可能ですか?

public virtual ICollection WebSiteLanguages {get; セットする; }

必須。WebSiteLanguageが作成されていない場合、Webサイトエンティティは無効です。

どうもありがとう。

4

1 に答える 1

0

投稿によると、 http://blogs.msdn.com/b/adonet/archive/2011/05/27/ef-4-1-validation.aspxナビゲーションプロパティは、関連するFK値を設定できるため、ファセット検証から除外されます。ナビゲーションプロパティはSaveChanges()"で設定されます。ナビゲーションプロパティがnullでないことを検証するには、次のことができます。

  • それを検証するカスタム属性を作成します(タイプまたはプロパティ)
  • 上記を実行するIValidatableObjectインターフェイスを実装します
  • DbContext.ValidateEntity保護されたメソッドをオーバーライドして、プロパティがnullでないことを検証します。この場合、base.ValidateEntity()を呼び出して、他のプロパティを検証します(詳細については、http://blogs.msdn.com/bを参照してください)。 /adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx

3番目の解決策が最もクリーンなようです。

于 2012-02-10T02:02:04.013 に答える