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

在此处输入图像描述

我的问题是:
是否有可能使

公共虚拟 ICollection WebSiteLanguages { 获取;放; }

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

非常感谢。

4

1 回答 1

0

根据帖子http://blogs.msdn.com/b/adonet/archive/2011/05/27/ef-4-1-validation.aspx导航属性被排除在构面验证之外“因为您可以设置关联的 FK 值并且导航属性将设置在 SaveChanges()"上。要验证导航属性不为空,您可以:

  • 创建一个验证它的自定义属性(无论是在类型上还是在属性上)
  • 实现执行上述操作的 IValidatableObject 接口
  • 覆盖 DbContext.ValidateEntity 受保护的方法,以便它验证属性不为空,如果是这种情况,则调用 base.ValidateEntity() 来验证其他属性(有关更多详细信息,请参见:http: //blogs.msdn.com/b /adonet/archive/2010/12/15/ef-feature-ctp5-validation.aspx )

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

于 2012-02-10T02:02:04.013 回答