私はEF5コードファースト、移行、およびタイプごとのテーブル継承を使用しています。他のクラスから継承するいくつかのクラスがあります。たとえば、Tenant
からLandlord
継承しUserProfile
ます。
メソッドを使用して、protected override void Seed()
テスト データをデータベースに追加しています。したがって、たとえば、2 つUserProfile
のオブジェクトと 1Tenant
および 1を作成しますLandlord
。テナント エンティティが最初のユーザー プロファイル エンティティに関連付けられ、家主エンティティが 2 番目のユーザー プロファイル エンティティに関連付けられていることを確認するにはどうすればよいですか? table-per-type 継承を使用しているため、派生クラスのがその基本クラスのUserId
と等しいことを明示的に言う必要がありますか? UserId
私は周りを検索しましたが、役に立つものは何も見つかりませんでした。私は次のようにそれをやろうとしました:
protected override void Seed(Context context)
{
var users = new List<UserProfile>
{
new UserProfile { UserId=1, UserName="Matt", Email="a@a.com", AccountType=AccountType.Tenant },
new UserProfile { UserId=2, UserName="Dave", Email="a@a.com", AccountType=AccountType.Landlord }
};
users.ForEach(u => context.UserProfile.AddOrUpdate(u));
context.SaveChanges();
var tenants = new List<Tenant>
{
new Tenant { UserId = users.Single(x => x.UserId = 1) /* other properties */ }
// ...
};
tenants.ForEach(t => context.Tenant.AddOrUpdate(t));
context.SaveChanges();
var landlords = new List<Landlord>
{
new Landlord { UserId = users.Single(x => x.UserId = 2) /* other properties */ }
// ...
};
landlords.ForEach(l => context.Tenant.AddOrUpdate(l));
context.SaveChanges();
}