そのため、別のデータベースからテーブルをインポートする必要があります。テーブルは独自のキーを使用して自己参照していますが、特にインポート先のテーブルが複数のデータセット用であるため、キーを信頼できません。
私はエンティティ フレームワークとコード ファーストの流暢な 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」はすべてのテーブルの主キーであると見なされます。