Как сделать ICollectionНеобходимые.Как - PullRequest
1 голос
/ 10 февраля 2012

Вот мой главный объект, который будет содержать список языков

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.

enter image description here

Мой вопрос:
Можно ли сделать

публичная виртуальная ICollection WebSiteLanguages ​​{get; задавать; }

Обязательно. Объект веб-сайта недействителен, если не создан WebSiteLanguage.

Большое спасибо.

1 Ответ

0 голосов
/ 10 февраля 2012

Согласно сообщению 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)

Третье решение кажется самым чистым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...