将数据插入数据库时实体框架中的验证错误
Posted
技术标签:
【中文标题】将数据插入数据库时实体框架中的验证错误【英文标题】:Validation error in Entity framework when inserting data into the database 【发布时间】:2021-04-22 03:13:15 【问题描述】:我正在尝试使用实体框架将分类数据插入到我的数据库中的Classifications
表中。问题是它给了我这个错误:
"一个或多个实体的验证失败。见 '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()
上给出了错误。使用调试时,它会检查此方法,而是打印添加的数据消息,它会转到异常。
我在我的 Main 方法上运行它。
class Program
static void Main(string[] args)
string name = "ClassificationTest";
Classifications.InsertClassification(name);
有人可以帮我解决这个问题吗?
【问题讨论】:
这可能是由电影、系列和偏好顶部的 [Required] 标签引起的。EntityValidationErrors
是什么?通过 Locals 窗口通过 ex
检查
在本地窗口中它只是说: System.Exception System.Data.Entity.Validation.DbEntityValidationException
是的,这是因为 [Required] 字段。
【参考方案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;
【讨论】:
您愿意解释一下原因吗? 它已经写在我的答案中了。属性 [必需] 要求属性不应为空。例如 Movies=new List以上是关于将数据插入数据库时实体框架中的验证错误的主要内容,如果未能解决你的问题,请参考以下文章