使用Entity Framework Code First和Fluent API配置许多一对一关系

麦克风

我有一个别人设计的可怕的数据库模型(在MySQL中,尽管我认为这并不重要),所以我坚持使用它,但是无论如何都想与Entity Framework一起使用:

数据库

物品

ASSET_ID*   ASSET_NAME  FIELDS_ID
1          Cat         1
2          Dog         2
3          Fish        3

ItemFields

ID*    CUSTOMFIELD1ID    CUSTOMFIELD2ID    CUSTOMFIELD3ID
1     1001              1002              1003
2     1004              1005              1006
3     1007              1008              1009

场地

ID*    STRINGVAL
1001   Meow Mix
1002   House
1003   5lbs
1004   Kibble
1005   Yard
1006   30lbs
1007   Fish Food
1008   Tank
1009   0.5 ounces

*表示表的PK


目标

最终,我试图配置这些关系,以便我可以像这样获得自定义数据:

Item item = GetItem(1);
item.Food.ToString(); // Output: meow mix
item.Place.ToString(); // Output: house
item.Weight.ToString(); // Output: 5 lbs 

...等等。但老实说,我现在已经满足了:

Item item = GetItem(1);
Item.ItemFields.CustomField3.Value // Output: 5 lbs
Item item = GetItem(2);
Item.ItemFields.CustomField2.Value // Output: Yard
Item item = GetItem(3);
Item.ItemFields.CustomField1.Value // Output: Fish Food


到目前为止的解决方案

到目前为止,我已经知道了:

一对一:项目-ItemFields

modelBuilder.Entity<Item>()
    .HasRequired(x => x.ItemFields)
    .WithRequiredPrincipal(y => y.Item);

但是,如何将ItemFields.CustomField1ID映射到Field.ID?

甚至有可能首先使用EF代码配置这样的关系?对于这是一对一还是一对多,我感到很困惑。我认为实际上是许多一对一的关系(如果这很有意义)。

有什么建议?

麦克风

我可能已经知道了。我编辑了ItemFields类,使其看起来像这样:

public class ItemFields
{
    public int Id { get; set; }
    public int CUSTOMFIELD1ID { get; set; }
    public virtual Field CustomField1 { get; set; }

然后配置这些关系:

modelBuilder.Entity<Item>()
    .HasRequired(x => x.CustomField1)
    .WithMany()
    .HasForeignKey(x => x.CUSTOMFIELD01_ID);
modelBuilder.Entity<Item>()
    .HasRequired(x => x.CustomField2)
    .WithMany()
    .HasForeignKey(x => x.CUSTOMFIELD02_ID);

它似乎奏效了,尽管说实话我不完全理解为什么。理想情况下,我仍然希望将它们映射到更用户友好的类。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Entity Framework 6 Code First中创建一对一关系时出错

来自分类Dev

如何在Entity Framework 6 Code First中的同一张表之间创建一对一关系?

来自分类Dev

如何使用Entity Framework Core Fluent API配置一对多关系

来自分类Dev

使用Entity Framework一对一关系中的主键错误

来自分类Dev

具有指向单个表的多个一对多关系的Entity Framework Code First配置

来自分类Dev

我如何使用Fluent API使用Entity Framework Code First映射到查找表

来自分类Dev

如何使用带有Fluent API的Entity Framework Code First映射到查找表

来自分类Dev

如何在Entity Framework Core中创建一对一关系?

来自分类Dev

没有PK或EntityKey的Entity Framework中的一对一关系

来自分类Dev

Entity Framework Core上与同一表的两个一对一关系

来自分类Dev

使用默认约定的一对一关系和可选的依赖端

来自分类Dev

使用默认约定的一对一关系和可选的依赖端

来自分类Dev

使用Code First的Entity Framework 6单向关系

来自分类Dev

使用Entity Framework 6.0,Fluent API和DataAnnotations重用一列作为必需属性

来自分类Dev

Entity Framework 5中的一对零/一对和一对多关系

来自分类Dev

Fluent API不以一对一关系级联删除

来自分类Dev

实体框架代码First Fluent API配置,用于一对一标识关系

来自分类Dev

使用 Fluent API 的 EF 6 Code First 关系。如何设置第一个和第三个表之间的关系或获取分组集合

来自分类Dev

接口和类的一对一关系

来自分类Dev

使用Python 2.76输出一对一关系

来自分类Dev

如何使用一对一关系关联模型

来自分类Dev

使用INTERLEAVE表进行一对一关系

来自分类Dev

在休眠中使用一对一关系删除

来自分类Dev

使用Entity Framework 7 Code First定义自引用外键关系

来自分类Dev

我可以使用Entity Framework Code First数据注释创建双向外键关系吗?

来自分类Dev

首先使用实体框架代码:如何不使用“主要”和相同ID的概念设置一对一关系?

来自分类Dev

如何使用Entity Framework Code First和DDD创建数据库?

来自分类Dev

使用不同的数据库在Entity Framework Code First(DbContext)上进行调试和发布

来自分类Dev

EF6代码优先-使用不匹配的外键配置一对一关系

Related 相关文章

  1. 1

    在Entity Framework 6 Code First中创建一对一关系时出错

  2. 2

    如何在Entity Framework 6 Code First中的同一张表之间创建一对一关系?

  3. 3

    如何使用Entity Framework Core Fluent API配置一对多关系

  4. 4

    使用Entity Framework一对一关系中的主键错误

  5. 5

    具有指向单个表的多个一对多关系的Entity Framework Code First配置

  6. 6

    我如何使用Fluent API使用Entity Framework Code First映射到查找表

  7. 7

    如何使用带有Fluent API的Entity Framework Code First映射到查找表

  8. 8

    如何在Entity Framework Core中创建一对一关系?

  9. 9

    没有PK或EntityKey的Entity Framework中的一对一关系

  10. 10

    Entity Framework Core上与同一表的两个一对一关系

  11. 11

    使用默认约定的一对一关系和可选的依赖端

  12. 12

    使用默认约定的一对一关系和可选的依赖端

  13. 13

    使用Code First的Entity Framework 6单向关系

  14. 14

    使用Entity Framework 6.0,Fluent API和DataAnnotations重用一列作为必需属性

  15. 15

    Entity Framework 5中的一对零/一对和一对多关系

  16. 16

    Fluent API不以一对一关系级联删除

  17. 17

    实体框架代码First Fluent API配置,用于一对一标识关系

  18. 18

    使用 Fluent API 的 EF 6 Code First 关系。如何设置第一个和第三个表之间的关系或获取分组集合

  19. 19

    接口和类的一对一关系

  20. 20

    使用Python 2.76输出一对一关系

  21. 21

    如何使用一对一关系关联模型

  22. 22

    使用INTERLEAVE表进行一对一关系

  23. 23

    在休眠中使用一对一关系删除

  24. 24

    使用Entity Framework 7 Code First定义自引用外键关系

  25. 25

    我可以使用Entity Framework Code First数据注释创建双向外键关系吗?

  26. 26

    首先使用实体框架代码:如何不使用“主要”和相同ID的概念设置一对一关系?

  27. 27

    如何使用Entity Framework Code First和DDD创建数据库?

  28. 28

    使用不同的数据库在Entity Framework Code First(DbContext)上进行调试和发布

  29. 29

    EF6代码优先-使用不匹配的外键配置一对一关系

热门标签

归档