2012-05-09 1 views
0

Y at-il quelqu'un qui pourrait me dire comment puis-je faire le mappage de table correspondant avec le code de l'infrastructure d'abord. Voici ma tableEntity framework 4.1 relation à la table itselft

enter link description here

j'ai essayé de le faire, mais sans succès.

[Table("Matiere")] 
public class Matiere 
{ 
    [Key] 
    public Int32 Id { get; set; } 
    public Int32? IdParent { get; set; } 
    [Column("NomMatiere")] 
    public String Nom { get; set; } 
    public virtual Matiere Parent { get; set; } 
    public virtual ICollection<Matiere> Childs { get; set; } 
} 

public class MatiereConfiguration : EntityTypeConfiguration<Matiere> 
{ 
    public MatiereConfiguration() 
    { 
     this.HasOptional(m => m.Parent).WithMany(m => m.Childs).HasForeignKey(m => m.IdParent); 
     this.HasOptional(m => m.Childs).WithRequired(); 
    } 
} 

merci d'avance.

Répondre

0

Vous êtes proche. Je ne pense pas que vous deviez fournir le HasOptional(m => m.Childs).WithRequired();

Tout d'abord, je mettrais toutes vos informations de mappage dans votre configuration Matiere au lieu d'utiliser une combinaison de mappages DataAnnotations et Fluent. Ce n'est pas obligatoire, mais seulement une suggestion.

Cela devrait fonctionner:

public class MatiereConfiguration : EntityTypeConfiguration<Matiere> 
    { 
     public MatiereConfiguration() 
     { 
      HasKey(m => m.Id); 
      Property(m => m.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
      Property(m => m.Nom).HasColumnName("NomMatiere")   
      HasOptional(m => m.Parent).WithMany(m => m.Childs).HasForeignKey(m => m.IdParent); 

     } 
    } 
Questions connexes