我正在使用 EF5 代码优先、迁移和按类型继承的表。我有一些从其他类继承的类。例如Tenant
并Landlord
继承自UserProfile
.
我正在使用该protected override void Seed()
方法将测试数据添加到我的数据库中。因此,例如,我创建了 2 个UserProfile
对象和 1Tenant
和 1 Landlord
。如何确保租户实体与第一个用户配置文件实体相关联,而房东实体与第二个用户配置文件实体相关联?因为我使用的是 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();
}