2012-05-09 3 views
0

エンティティフレームワークコードを使用して対応するテーブルマッピングを最初に行う方法を教えてくれる人は誰ですか? は、ここで私はこれを実行しようとしたが、任意の成功なしできた私のテーブルエンティティフレームワーク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();

まず、DataAnnotationsとFluentマッピングが混在する代わりに、すべてのマッピング情報をMatiereConfigurationに入れます。それは必須ではなく、単なる提案です。

これは動作するはずです:

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

     } 
    }