2017-03-10 3 views
0

J'ai une base de données composée de six tables (Personne, adresse, email, téléphone, Education, Naissance, Images). Le personnage de la table a des liens avec de nombreuses adresses (Adresse, Email, Téléphone, Education,) et en tête à tête (Naissance, Photos) L'éducation est la relation un à un Adresse (un Email, un Téléphone) . La base de données est créée par le framework d'entité par le code en premier, et vide est créé sans porblemu. Ajout de l'entité fonctionne fonctionne sans problème jusqu'à ce que vous ne contient aucune sorte de données, l'éducation, lance alors l'exception:L'ajout d'une entité à un framework d'entité de base de données génère une exception 'System.Data.Entity.Infrastructure.DbUpdateException

Une exception non gérée du type « System.Data.Entity.Infrastructure.DbUpdateException » a eu lieu dans EntityFramework.dll

Informations supplémentaires: Une erreur s'est produite lors de la mise à jour des entrées. Voir l'exception interne pour plus de détails.

codes de mes classes

[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; } 
} 

classe Contexte

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); 
    } 

Je ne sais pas ce qui cause cela et s'il vous plaît aider

+0

Quelle est l'exception intérieure du 'DbUpdateException'? À quoi ressemble le code que vous utilisez pour ajouter l'entité? –

Répondre

0

Comme l'indique le message d'erreur, vous devez regarder à l'exception interne pour plus d'informations.

Un rapide coup d'oeil à votre code, à une supposition, je dirais que cela pourrait se plaindre de l'absence d'une clé primaire sur la table « naissance »