我有一个层次结构如下:
class UserProfileBase {
[Key]
public int UserId { get; set; }
[ForeignKey("FriendsGroup")]
public int FriendsGroupId { get; set; }
public virtual UserGroup FriendsGroup { get; set; }
//etc...
}
public class UserProfile : UserProfileBase
{
public UserProfile()
{
IsPublic = true; // default value is true.
}
public string FamilyName { get; set; }
//etc...
}
过去它会创建一个表“UserProfile”并合并所有属性。但是我已经将 UserProfileBase 作为核心库的一部分移到了另一个程序集中。现在它正在生成两个表“UserProfile”和“UserProfileBase”,即使我从未将 UserProfileBase 添加到 DbContext。我注意到它似乎在使用 TPH 方法,因为 UserProfileBase 表包含来自 UserProfile 的属性,而 UserProfile 表只有一个 id 和 discriminator 列。
我的 DbContext 又是这样的:
class MyContext : DbContext {
public List<UserProfile> People { get; set; }
}
我不明白。是因为它在另一个程序集中吗?谢谢你的帮助。