仅使用代码实体拆分

时间:2009-12-23 21:16:53

标签: .net entity-framework entity-framework-4 code-first

如果两个表都不包含主键,那么他们是否可以使用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表的username列。我可以使用设计器使用外键进行映射,但我不确定如何使用Code Only。我尝试在配置对象中使用两个MapHierarchy语句,但它看起来只有在两个表都使用相同的主键时才有效。

1 个答案:

答案 0 :(得分:0)

我认为实体框架的当前状态不可能实现这一点。

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

我的假设是错误的,因为你可以在设计器的第二个表中添加代码实际工作的列。尝试在EDMX中进行映射时遇到非常类似的错误,就像我在使用“仅代码”时一样。