2017-03-10 58 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

随着错误消息状态,您将需要寻找在内部例外以获取更多信息。

快速浏览一下你的代码,在我猜测它可能会抱怨的“诞生”表