Jquery 一次保存多个表时System.Data.Entity.Infrastructure.DbUpdateException

Jquery 一次保存多个表时System.Data.Entity.Infrastructure.DbUpdateException,jquery,ajax,entity-framework,web-services,Jquery,Ajax,Entity Framework,Web Services,我想一次插入所有这些表,在调试器中一切都很顺利,直到它点击SaveChanges()方法,我得到“System.Data.Entity.Infrastructure.DbUpdateException”错误 表: public partial class EmployementRequest { [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridabl

我想一次插入所有这些表,在调试器中一切都很顺利,直到它点击SaveChanges()方法,我得到“System.Data.Entity.Infrastructure.DbUpdateException”错误

表:

  public partial class EmployementRequest
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public EmployementRequest()
    {
        this.EmployeeCourses = new Collection<EmployeeCours>();
        this.EmployeeLanguages = new Collection<EmployeeLanguage>();
        this.EmployeeSkills = new Collection<EmployeeSkill>();
    }

    public System.Guid PKEmploymentRequest { get; set; }
    public Nullable<System.Guid> FKPerson { get; set; }
    public string Name { get; set; }
    public string Surnam { get; set; }
    public string Father { get; set; }
    public string IDNumber { get; set; }
    public string IDCardNumber { get; set; }
    public string IDCity { get; set; }
    public string Birthday { get; set; }
    public string Birthplace { get; set; }
    public string Nationality { get; set; }
    public string Religion { get; set; }
    public string Phone { get; set; }
    public string Cell { get; set; }
    public string Address { get; set; }
    public string EmergencyName { get; set; }
    public string EmergencyPhone { get; set; }
    public string EmergencyAddress { get; set; }
    public string ParentedPeople { get; set; }
    public string Gender { get; set; }
    public string MarriageStatus { get; set; }
    public string Residency { get; set; }
    public string InsuranceStatus { get; set; }
    public string InsuranceCode { get; set; }
    public string VehicleStatus { get; set; }
    public string VehicleType { get; set; }
    public string MilitaryServiceStatus { get; set; }
    public string EducationGrade { get; set; }
    public string EducatedFrom { get; set; }
    public string EducationField { get; set; }
    public string Illness { get; set; }
    public Nullable<bool> ExtraWorkCapability { get; set; }
    public string LeisureTimeHobbies { get; set; }
    public Nullable<decimal> Salary { get; set; }
    public string IntroductionMethod { get; set; }
    public string IntroducerName { get; set; }
    public string CreatedOn { get; set; }

    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual Collection<EmployeeCours> EmployeeCourses { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual Collection<EmployeeLanguage> EmployeeLanguages { get; set; }
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
    public virtual Collection<EmployeeSkill> EmployeeSkills { get; set; }
}


    public partial class EmployeeCours
{
    public System.Guid PKEmlpoyeeCourse { get; set; }
    public Nullable<System.Guid> FKEmployementRequest { get; set; }
    public string Course { get; set; }
    public string Description { get; set; }
    public Nullable<int> Duration { get; set; }
    public string Date { get; set; }
    public string Association { get; set; }

    public virtual EmployementRequest EmployementRequest { get; set; }
}

 public partial class EmployeeLanguage
{
    public System.Guid PKEmployeeLanguage { get; set; }
    public Nullable<System.Guid> FKEmploymentRequest { get; set; }
    public string Name { get; set; }
    public string ComprehensionLevel { get; set; }
    public string WritingLevel { get; set; }
    public string ConversationLevel { get; set; }

    public virtual EmployementRequest EmployementRequest { get; set; }
}
   public partial class EmployeeSkill
{
    public System.Guid PKEmployeeSkill { get; set; }
    public Nullable<System.Guid> FKEmploymentRequest { get; set; }
    public string Skill { get; set; }
    public string Description { get; set; }

    public virtual EmployementRequest EmployementRequest { get; set; }
}
方法


尝试将您的代码包含在带有Update Exception或DbValidationException
ex
的Try catch中:

try 
{
    using (var db = new UKN_DBNAMEEntities())
        {

            db.EmployementRequests.Add(employementRequest);
            db.SaveChanges();
        }
}
catch(DbEntityValidationException ex)
{
     //get exception and debug
}
catch(UpdateException ex)
{
     //get exception and debug
}

我意识到实际的错误是什么。违反主键约束
    [WebMethod]
    public void AddEmployementRequest(EmployementRequest emp,EmployeeLanguage el,EmployeeSkill es,EmployeeCours ec)
    {
        emp.PKEmploymentRequest = Guid.NewGuid();

        EmployeeSkill employeeSkill = new EmployeeSkill
        {
            PKEmployeeSkill = new Guid(),
            FKEmploymentRequest = emp.PKEmploymentRequest,
            Skill = es.Skill,
            Description = es.Description
        };
        EmployeeLanguage employeeLanguage = new EmployeeLanguage
        {
            FKEmploymentRequest = emp.PKEmploymentRequest,
            PKEmployeeLanguage = Guid.NewGuid(),
            ComprehensionLevel = el.ComprehensionLevel,
            ConversationLevel = el.ConversationLevel,
            WritingLevel = el.WritingLevel,
            Name = el.Name
        };
        EmployeeCours employeeCours = new EmployeeCours
        {
            PKEmlpoyeeCourse = Guid.NewGuid(),
            FKEmployementRequest = emp.PKEmploymentRequest,
            Date = ec.Date ,
            Course = ec.Course,
            Duration = ec.Duration,
            Association = ec.Association,
            Description = ec.Description
        };
        EmployementRequest employementRequest = new EmployementRequest
        {
            Name = emp.Name,
            Address = emp.Address,
            Surnam = emp.Surnam,
            Father = emp.Father,
            IDNumber = emp.IDNumber,
            IDCardNumber = emp.IDNumber,
            IDCity = emp.IDCity,
            Birthday = emp.Birthday,
            Birthplace = emp.Birthplace,
            Nationality = emp.Nationality,
            Religion = emp.Religion,
            Phone = emp.Phone,
            Cell = emp.Cell,
            EmergencyAddress = emp.EmergencyAddress,
            EmergencyName = emp.EmergencyName,
            EmergencyPhone = emp.EmergencyPhone,
            ParentedPeople = emp.ParentedPeople,
            Gender = emp.Gender,
            MarriageStatus = emp.MarriageStatus,
            Residency = emp.Residency,
            InsuranceCode = emp.InsuranceCode,
            InsuranceStatus = emp.InsuranceStatus,
            VehicleType = emp.VehicleType,
            MilitaryServiceStatus = emp.MilitaryServiceStatus,
            EducatedFrom = emp.EducatedFrom,
            EducationField = emp.EducationField,
            EducationGrade = emp.EducationGrade,
            ExtraWorkCapability = emp.ExtraWorkCapability,
            LeisureTimeHobbies = emp.LeisureTimeHobbies,
            Salary = emp.Salary,
            IntroducerName = emp.IntroducerName,
            IntroductionMethod = emp.IntroductionMethod,
            Illness = emp.Illness,
            VehicleStatus = emp.VehicleStatus,
        };
        employementRequest.EmployeeLanguages.Add(employeeLanguage);
        employementRequest.EmployeeSkills.Add(employeeSkill);
        employementRequest.EmployeeCourses.Add(employeeCours);
        using (var db = new UKN_DBNAMEEntities())
        {

            db.EmployementRequests.Add(employementRequest);
            db.SaveChanges();
        }
    }


}
try 
{
    using (var db = new UKN_DBNAMEEntities())
        {

            db.EmployementRequests.Add(employementRequest);
            db.SaveChanges();
        }
}
catch(DbEntityValidationException ex)
{
     //get exception and debug
}
catch(UpdateException ex)
{
     //get exception and debug
}