如何使ICollection <child entities =“”>必需。如何</儿童>

时间:2012-02-09 20:36:49

标签: entity-framework-4.1 asp.net-mvc-4

这是我的主实体,其中包含语言列表

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 Child类是

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调用中添加许多语言。

enter image description here

我的问题是:

是否可能
  

public virtual ICollection WebSiteLanguages {get;   组; }

必需。如果没有创建WebSiteLanguage,则网站实体无效。

非常感谢。

1 个答案:

答案 0 :(得分: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

第三种解决方案似乎是最干净的。