#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
через окно Locals3. В окне 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] требует, чтобы свойство не было нулевым. Например, фильмы =новый список<Фильмы>{ …}