【问题标题】:Entity Splitting with Code Only仅使用代码进行实体拆分
【发布时间】:2010-12-29 15:32:14
【问题描述】:

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

【问题讨论】:

  • 你看过这个来自 pdc09 的关于 EF 的microsoftpdc.com/Sessions/FT10 演示吗?如果没有 - 看看它。
  • 感谢 Alexander,该视频很棒,但不幸的是它没有解决实体拆分问题。强烈推荐任何进入 EF 的人观看。

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


【解决方案1】:

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-28
    • 2017-01-28
    • 1970-01-01
    相关资源
    最近更新 更多