2017-03-10 59 views
0

我有包括6個表格的數據庫(個人,地址,電子郵件,電話,教育,出生,圖片)。表人物有關係jede很多的(ADRESS,電子郵件,電話,教育,),一個對一個(出生,圖片)表教育的關係是一對一ADRESS orez一個一對多(電子郵件,電話) 。 數據庫首先由代碼由實體框架創建,並且在沒有porblemu的情況下創建空。添加實體運行運行沒有問題,直到您不包含任何種類的數據,教育,然後拋出異常:增加一個實體的數據庫實體框架生成異常「System.Data.Entity.Infrastructure.DbUpdateException

在EntityFramework.dll

中發生未處理的異常'System.Data.Entity.Infrastructure.DbUpdateException'類型

附加信息:更新條目時發生錯誤。詳情請參閱內部例外。我的課的

[Table ("Person")] 
public class Person 
{ 
    [Key] 
    [Column ("Person_ID")] 
    public int PersonID { get; set; } 
    [Column ("Name")] 
    [Required] 
    [MaxLength (50)] 
    public string Name { get; set; } 
    [Column ("Surname")] 
    [Required] 
    [MaxLength (50)] 
    public string Surname { get; set; } 
    [Timestamp] 
    public byte[] RovVersion { get; set; } 


    public virtual IList<Adress> Adress { get; set; } 
    public virtual IList<Email> Mail { get; set; } 
    public virtual IList<Phone> Phone { get; set; } 
    public virtual IList<Education> Education { get; set; } 
    public virtual Birth Birth { get; set; } 
    public virtual Pictures Pictures { get; set; } 
} 
[Table ("Education")] 
public class Education 
{ 
    [Key] 
    [Column("Education_ID")] 
    public int EducationID { get; set; } 
    [Column("Name")] 
    [MaxLength(50)] 
    public string NameOfScool { get; set; } 
    [Column("Start")] 
    public DateTime StartEducaton { get; set; } 
    [Column("End")] 
    public DateTime EndEducation { get; set; } 
    [ForeignKey("Person")] 
    [Column("Person_ID")] 
    public int PersonID { get; set; } 
    [ForeignKey("Adress")] 
    [Column("Adress_ID")] 
    public int AdresID { get; set; } 

    public virtual Person Person { get; set; } 
    public virtual Adress Adress { get; set; } 
    public virtual IList<Email> Mail { get; set; } 
    public virtual IList<Phone> Phone { get; set; } 
} 
[Table("Adress")] 
public class Adress 
{ 
    [Key] 
    [Column ("Adress_ID")] 
    public int AdressID { get; set; } 
    [Column ("Adress_1")] 
    [MaxLength (50)] 
    public string Adress1 { get; set; } 
    [Column ("Adress_2")] 
    [MaxLength (50)] 
    public string Adress2 { get; set; } 
    [Column ("Number")] 
    [MaxLength (10)] 
    public string Number { get; set; } 
    [Column ("Post")] 
    [MaxLength (50)] 
    public string Post { get; set; } 
    [Column ("Code_Post")] 
    [MaxLength (6)] 
    public string CodePost { get; set; } 
    [Column ("Region")] 
    public EnumRegion Region { get; set; } 
    [Column ("Country")] 
    [MaxLength (50)] 
    public string Country { get; set; } 

    public virtual Person Person { get; set; } 
} 
[Table ("Birth")] 
public class Birth 
{ 
    [ForeignKey ("Person")] 
    [Column ("Birth_ID")] 
    public int BirthID { get; set; } 
    [Column("Place_Of_Birth")] 
    [MaxLength (50)] 
    public string Place { get; set; } 
    [Column ("Date_Of_Birth")] 
    public DateTime Date { get; set; } 

    public virtual Person Person { get; set; } 
} 
[Table("Phone")] 
public class Phone 
{ 
    [Key] 
    [Column("Phone_ID")] 
    public int PhoneId { get; set; } 
    [Column("Phone_Number")] 
    public int PhoneNumber { get; set; } 
    [Column("Choise_Phone")] 
    public EnumChoise Choise { get; set; } 

    public virtual Person Person { get; set; } 
    public virtual Education Education { get; set; } 
} 
[Table ("Email")] 
public class Email 
{ 
    [Key] 
    [Column("Adress_ID")] 
    public int EmailId { get; set; } 
    [Column("Mail")] 
    [MaxLength(50)] 
    public string Mail { get; set; } 
    [Column("Choise_Mail")] 
    public EnumChoise Choise { get; set; } 

    public virtual Person Person { get; set; } 
    public virtual Education Education { get; set; } 
} 

Context類

public class EFContext :DbContext 
{ 
    public EFContext() 
     :base ("name=EntityModel") 
    { 
     Database.SetInitializer(new MigrateDatabaseToLatestVersion<EFContext, 
    Migrations.Configuration>()); 

    } 
    public DbSet<Person> Person { get; set; } 
    public DbSet<Adress> Adress { get; set; } 
    public DbSet<Email> Mail { get; set; } 
    public DbSet<Phone> Phone { get; set; } 
    public DbSet<Birth> Birth { get; set; } 
    public DbSet<Education> Education { get; set; } 
    public DbSet<Pictures> Pictures { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     modelBuilder.Entity<Person>().Property(e => e.RovVersion).IsRowVersion(); 
     base.OnModelCreating(modelBuilder); 
    } 

我不知道是什麼原因造成這一點,請幫助

+0

什麼是'DbUpdateException'的內部異常缺乏一個主鍵?你用來添加實體的代碼是什麼樣的? –

回答

0

隨着錯誤消息狀態,您將需要尋找在內部例外以獲取更多信息。

快速瀏覽一下你的代碼,在我猜測它可能會抱怨的「誕生」表