2012-05-09 6 views
0

есть ли кто-нибудь, кто мог бы сказать мне, как я могу выполнить соответствующее сопоставление таблиц с сущностью. Вот мой столEntity framework 4.1 отношение к таблице itselft

enter link description here

я пытался это сделать, но без какого-либо успеха.

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

благодарит заранее.

ответ

0

Вы близко. Я не думаю, что вам нужно поставить HasOptional(m => m.Childs).WithRequired();

Во-первых, я бы поместил всю вашу картографическую информацию в вашу MatiereConfiguration вместо использования сочетаний DataAnnotations и Fluent. Это не требуется, а просто предложение.

Это должно работать:

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

     } 
    } 
Смежные вопросы