0

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

在此处输入链接描述

我试过这样做,但没有任何成功。

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

提前致谢。

4

1 回答 1

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

        }
    }
于 2012-05-11T01:13:27.347 回答