实体框架4.1与表本身的关系

时间:2012-05-09 18:51:53

标签: entity-framework-4.1

是否有人可以告诉我如何首先使用实体​​框架代码进行相应的表映射。 这是我的表

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

提前感谢。

1 个答案:

答案 0 :(得分: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);

        }
    }