1

我有一个层次结构如下:

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; }
}

我不明白。是因为它在另一个程序集中吗?谢谢你的帮助。

4

1 回答 1

0

这是由基类中的 ForeignKey 属性引起的。如果该属性在派生类中,则该属性将起作用,而不是在基类中。

因此,为了保持相同的功能,我只是使用流体 API 定义了外键并将其从基类中取出。

于 2013-10-04T20:47:36.247 回答