最佳答案
我在使用代码优先方法播种我的数据库时遇到此错误。
一个或多个实体的验证失败。有关更多详细信息,请参阅EntityValidationEr的属性。
老实说,我不知道如何检查验证错误的内容。Visual Studio向我展示了它是一个包含8个对象的数组,因此有8个验证错误。
这与我以前的模型一起工作,但我做了一些更改,我在下面解释:
请原谅我的代码很长,但我必须全部粘贴。异常抛出在以下代码的最后一行。
namespace Data.Model{public class Position{[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]public int PositionID { get; set; }
[Required(ErrorMessage = "Position name is required.")][StringLength(20, MinimumLength = 3, ErrorMessage = "Name should not be longer than 20 characters.")][Display(Name = "Position name")]public string name { get; set; }
[Required(ErrorMessage = "Number of years is required")][Display(Name = "Number of years")]public int yearsExperienceRequired { get; set; }
public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }}
public class Applicant{[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]public int ApplicantID { get; set; }
[Required(ErrorMessage = "Name is required")][StringLength(20, MinimumLength = 3, ErrorMessage="Name should not be longer than 20 characters.")][Display(Name = "First and LastName")]public string name { get; set; }
[Required(ErrorMessage = "Telephone number is required")][StringLength(10, MinimumLength = 3, ErrorMessage = "Telephone should not be longer than 20 characters.")][Display(Name = "Telephone Number")]public string telephone { get; set; }
[Required(ErrorMessage = "Skype username is required")][StringLength(10, MinimumLength = 3, ErrorMessage = "Skype user should not be longer than 20 characters.")][Display(Name = "Skype Username")]public string skypeuser { get; set; }
public byte[] photo { get; set; }
public virtual ICollection<ApplicantPosition> applicantPosition { get; set; }}
public class ApplicantPosition{[Key][Column("ApplicantID", Order = 0)]public int ApplicantID { get; set; }
[Key][Column("PositionID", Order = 1)]public int PositionID { get; set; }
public virtual Position Position { get; set; }
public virtual Applicant Applicant { get; set; }
[Required(ErrorMessage = "Applied date is required")][DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)][Display(Name = "Date applied")]public DateTime appliedDate { get; set; }
[Column("StatusID", Order = 0)]public int StatusID { get; set; }
public Status CurrentStatus { get; set; }
//[NotMapped]//public int numberOfApplicantsApplied//{// get// {// int query =// (from ap in Position// where ap.Status == (int)Status.Applied// select ap// ).Count();// return query;// }//}}
public class Address{[StringLength(20, MinimumLength = 3, ErrorMessage = "Country should not be longer than 20 characters.")]public string Country { get; set; }
[StringLength(20, MinimumLength = 3, ErrorMessage = "City should not be longer than 20 characters.")]public string City { get; set; }
[StringLength(50, MinimumLength = 3, ErrorMessage = "Address should not be longer than 50 characters.")][Display(Name = "Address Line 1")]public string AddressLine1 { get; set; }
[Display(Name = "Address Line 2")]public string AddressLine2 { get; set; }}
public class ApplicationPositionHistory{[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]public int ApplicationPositionHistoryID { get; set; }
public ApplicantPosition applicantPosition { get; set; }
[Column("oldStatusID")]public int oldStatusID { get; set; }
[Column("newStatusID")]public int newStatusID { get; set; }
public Status oldStatus { get; set; }
public Status newStatus { get; set; }
[StringLength(500, MinimumLength = 3, ErrorMessage = "Comments should not be longer than 500 characters.")][Display(Name = "Comments")]public string comments { get; set; }
[DisplayFormat(DataFormatString = "{0:d}", ApplyFormatInEditMode = true)][Display(Name = "Date")]public DateTime dateModified { get; set; }}
public class Status{[DatabaseGenerated(System.ComponentModel.DataAnnotations.DatabaseGeneratedOption.Identity)]public int StatusID { get; set; }
[StringLength(20, MinimumLength = 3, ErrorMessage = "Status should not be longer than 20 characters.")][Display(Name = "Status")]public string status { get; set; }}}
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data.Entity;using System.IO;
namespace Data.Model{public class HRContextInitializer : DropCreateDatabaseAlways<HRContext>{protected override void Seed(HRContext context){#region StatusStatus applied = new Status() { status = "Applied" };Status reviewedByHR = new Status() { status = "Reviewed By HR" };Status approvedByHR = new Status() { status = "Approved by HR" };Status rejectedByHR = new Status() { status = "Rejected by HR" };Status assignedToTechnicalDepartment = new Status() { status = "Assigned to Technical Department" };Status approvedByTechnicalDepartment = new Status() { status = "Approved by Technical Department" };Status rejectedByTechnicalDepartment = new Status() { status = "Rejected by Technical Department" };
Status assignedToGeneralManager = new Status() { status = "Assigned to General Manager" };Status approvedByGeneralManager = new Status() { status = "Approved by General Manager" };Status rejectedByGeneralManager = new Status() { status = "Rejected by General Manager" };
context.Status.Add(applied);context.Status.Add(reviewedByHR);context.Status.Add(approvedByHR);context.Status.Add(rejectedByHR);context.Status.Add(assignedToTechnicalDepartment);context.Status.Add(approvedByTechnicalDepartment);context.Status.Add(rejectedByTechnicalDepartment);context.Status.Add(assignedToGeneralManager);context.Status.Add(approvedByGeneralManager);context.Status.Add(rejectedByGeneralManager);#endregion
#region PositionPosition netdeveloper = new Position() { name = ".net developer", yearsExperienceRequired = 5 };Position javadeveloper = new Position() { name = "java developer", yearsExperienceRequired = 5 };context.Positions.Add(netdeveloper);context.Positions.Add(javadeveloper);#endregion
#region ApplicantsApplicant luis = new Applicant(){name = "Luis",skypeuser = "le.valencia",telephone = "0491732825",photo = File.ReadAllBytes(@"C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010\Projects\SlnHR\HRRazorForms\Content\pictures\1.jpg")};
Applicant john = new Applicant(){name = "John",skypeuser = "jo.valencia",telephone = "3435343543",photo = File.ReadAllBytes(@"C:\Users\LUIS.SIMBIOS\Documents\Visual Studio 2010\Projects\SlnHR\HRRazorForms\Content\pictures\2.jpg")};
context.Applicants.Add(luis);context.Applicants.Add(john);#endregion
#region ApplicantsPositionsApplicantPosition appicantposition = new ApplicantPosition(){Applicant = luis,Position = netdeveloper,appliedDate = DateTime.Today,StatusID = 1};
ApplicantPosition appicantposition2 = new ApplicantPosition(){Applicant = john,Position = javadeveloper,appliedDate = DateTime.Today,StatusID = 1};
context.ApplicantsPositions.Add(appicantposition);context.ApplicantsPositions.Add(appicantposition2);#endregion
context.SaveChanges(); --->> Error here}}}