Ошибка проверки в Entity Framework при вставке данных в базу данных

#c# #sql #database #entity-framework

#c# #sql #База данных #entity-framework

Вопрос:

Я пытаюсь вставить данные классификации в Classifications таблицу в моей базе данных с помощью Entity framework. Проблема в том, что она выдает мне эту ошибку:

{«Сбой проверки для одного или нескольких объектов. Более подробную информацию см. в свойстве EntityValidationErrors «.}

Это мой код:

  public class Classifications
    {
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        [Required]
        public virtual int id { get; set; }

        [Required]
        [MaxLength(250)]
        public virtual string Classification { get; set; }

        [ForeignKey("Movie")]
        [Required]
        public virtual List<Movie> Movies { get; set; }
        [Required]
        public virtual List<Series> Series { get; set; }
        [Required]
        public virtual List<Preference> Preferences { get; set; }
}
 

и вот мой метод добавления классификаций:

  public static void InsertClassification(string name)
        {
            try
            {
                var classification = new Classifications() { Classification = name };
                using (var db = new DatabaseContext())
                {
                    db.Classifications.Add(classification);
                    db.SaveChanges();
                    Console.WriteLine("Added Classification");
                }
            }catch(Exception ex)
            {
                Console.WriteLine("Cound not add classification");
            }
        }
 

Ошибка выдается на db.saveChanges() . С помощью debug он проверяет этот метод, но вместо того, чтобы печатать добавленное сообщение данных, оно переходит к исключению.

Я запускаю его на своем основном методе.

  class Program
    {
        static void Main(string[] args)
        {
           string name = "ClassificationTest";
           Classifications.InsertClassification(name);


        }
    }
 

Может кто-нибудь помочь мне решить эту проблему?

Комментарии:

1. Это может быть вызвано тегом [Required] поверх фильмов, сериалов и настроек.

2. И какие EntityValidationErrors ? Проверьте ex через окно Locals

3. В окне locals просто написано: System. Исключение {System.Data.Entity. Проверка. Исключение DbEntityValidationException}

4. Да, это было из-за [обязательных] полей.

Ответ №1:

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

  [ForeignKey("Movie")]
        [Required]
        public virtual List<Movie> Movies { get; set; }
        [Required]
        public virtual List<Series> Series { get; set; }
        [Required]
        public virtual List<Preference> Preferences { get; set; }
}
 

Комментарии:

1. Не могли бы вы объяснить, почему?

2. Это уже написано в моем ответе. Атрибут [Required] требует, чтобы свойство не было нулевым. Например, фильмы =новый список<Фильмы>{ …}