【问题标题】:How to map table splitting in EF Code First?如何在 EF Code First 中映射表拆分?
【发布时间】:2011-03-22 11:04:02
【问题描述】:

如何使用 EF Code First 映射表拆分?例如here 描述了 EDMX 的表拆分。它允许将两个具有 1:1 关系的实体映射到同一个表中。我知道我可以使用entity and complex type 进行类似的映射,但最大的区别是复杂类型不能延迟加载(或根本不加载),这是拆分表的主要原因。

【问题讨论】:

    标签: .net entity-framework poco ef-code-first entity-framework-4.1


    【解决方案1】:

    这是我刚刚获得 EF 4.1 (RC) 在 Code First 中进行表拆分的方法。

    1. 定义两个实体。确保在两个实体中都包含密钥。此外,在每个实体中包含指向另一个实体的导航属性。
    2. 在您的 OnModelCreating 覆盖中。 . . 一种。将两个实体映射到同一个表。 湾。创建两个表之间的关系。

          modelBuilder.Entity<EntityOne>().ToTable("MySingleTable");
          modelBuilder.Entity<EntityTwo>().ToTable("MySingleTable");
      
          modelBuilder.Entity<EntityOne>().HasRequired(p => p.NavToEntityTwo).WithRequiredDependent(c => c.NavToEntityOne);
      

    这对我有用,但要意识到鉴于 RC 的新颖性,我只能查看有限且简单的场景。

    【讨论】:

    • 我已经尝试过了,但没有成功。我会再试一次并告诉你。
    • 你能解释一下它在什么方面不起作用吗?想到的一件事是我没有让数据库生成主键值。相反,我在代码中设置键值,我发现在调用 SaveChanges 之前我必须在第一个实体和第二个实体中添加值。
    • 它有效。我不知道我在尝试时错误配置了什么。我还在 MSDN 论坛上得到了答案,其中使用自动生成的 ID 以及仅在主体实体上使用导航属性:social.msdn.microsoft.com/Forums/en-US/adodotnetentityframework/…
    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多