0

そのため、別のデータベースからテーブルをインポートする必要があります。テーブルは独自のキーを使用して自己参照していますが、特にインポート先のテーブルが複数のデータセット用であるため、キーを信頼できません。

私はエンティティ フレームワークとコード ファーストの流暢な API を使用していますが、この問題の回避策を見つけるのに苦労しています。

これが私のPOCOクラスです(必要なデータポイントのみに簡略化されています):

public class Person
{
    public virtual int Id { get; set; }
    public virtual int personid { get; set; }
    public virtual int? parentid { get; set; }

    public virtual Person parent { get; set; }
    public virtual ICollection<Person> children { get; set; }
}

Id を使用できれば、これは単純な自己参照テーブルになりますが、personid を使用する必要があります。ここで必要な流れるような API のアイデアをセットアップしましたが、EF は Id を見続けます。

modelBuilder.Entity<Person>()
   .HasOptional(p => p.parent)
   .WithMany(p => p.children)
   .HasForeignKey(p => p.parentid)
   .WillCascadeOnDelete(false);

personid を Unique Constraint (EF6.1.2 ではまだ実装されていません) として使用してコレクションを埋める回避策はありますか?

Asp.NetBoilerplate も使用しているため、エンティティ、リポジトリなどをある程度制御できますが、お勧めしません。つまり、「Id」はすべてのテーブルの主キーであると見なされます。

4

1 に答える 1

0

うーん..

HasKey を使用して id 列を定義しないのはなぜですか??

modelBuilder.Entity<Person>()
    .HasKey(p=> p.personId)
    .HasOptional(p => p.parent)
    .WithMany(p => p.children)
    .HasForeignKey(p => p.parentid)
    .WillCascadeOnDelete(false);
于 2014-12-11T00:36:22.180 に答える