1

如果两个表都不包含主键,他们是一种使用 Entity Framework Code-Only 来拥有一个具有来自两个表的字段的实体的方法吗?

这是一个例子。

public class BlogPost
{
    public int PostID { get; set; }
    public String PostBody { get; set; }
    public int UserID { get; set; }
    public string Username { get; set; }
}

public class User
{
    public int UserID { get; set; }
    public String Username { get; set; }
}

public class BlogPostConfiguration : EntityConfiguration<BlogPost>
{
    public BlogPostConfiguration()
    {
        HasKey(b => b.PostID);
    }
}

public class UserConfiguration : EntityConfiguration<User>
{
    public UserConfiguration()
    {
        HasKey(b => b.UserID);
    }
}

我希望将 BlogPost 对象的 Username 属性映射到 User 表的用户名列。我可以使用设计器使用外键进行映射,但我不确定如何使用“仅代码”进行映射。我尝试在我的配置对象中使用两个 MapHierarchy 语句,但它看起来只有在两个表都使用相同的主键时才有效。

4

1 回答 1

0

我认为在实体框架的当前状态下这是不可能的。

为了进行实体拆分,您必须具有一对一的映射(主键必须在两个表中)。

我的假设是不正确的,因为您可以从设计器中的第二个表中添加列,该代码实际上可以工作。当我尝试在 EDMX 中进行映射时,我遇到了一个非常相似的错误,就像我在使用 Code-Only 时所做的那样。

于 2010-01-06T22:36:14.270 回答