3

わかりました、これは本当に簡単なはずですが、私は髪を引き裂いています. これが私のPOCOです(これは機械部品に関係しているため、部品を親部品に含めることができます):

public class Part
{
   public int ID { get; set; }
   public string Name { get; set; }
   public Part ParentPart { get; set; }
}

データベース テーブルが作成されると、列名は「ID」、「Name」、および「PartID」になります。その最後の列の名前を「ParentPartID」に変更するにはどうすればよいですか?

4

1 に答える 1

2

基本的に、独立した関連付けで外部キーの名前を変更したい場合、これはそれを行う流暢な API コードです。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Part>()
                .HasOptional(p => p.ParentPart)
                .WithMany()
                .IsIndependent()
                .Map(m => m.MapKey(p => p.ID, "ParentPartID"));
}

ただし、CTP5 のバグにより、このコードは自己参照関連付け(関連付けタイプ) で例外としてスローされます。回避策は、次のように関連付けを外部キー関連付けに変更することです。

public class Part
{
    public int ID { get; set; }
    public string Name { get; set; }                
    public int ParentPartID { get; set; }

    [ForeignKey("ParentPartID")]
    public Part ParentPart { get; set; }
}
于 2011-01-16T18:34:05.423 に答える