gpt4 book ai didi

entity-framework-4.1 - EF Code First 抽象关系?

转载 作者:行者123 更新时间:2023-12-05 00:37:46 26 4
gpt4 key购买 nike

我有一个类继承了另一个类与之有关系的基类。

例子:

  • 基类:动物
  • 子类 1:狗
  • 子类 2:猫
  • 相关的一对多表:疫苗接种
  • 一只狗可以接种多种疫苗。这被实现为 List
  • 一只猫可以接种多种疫苗。
  • 疫苗接种记录只能与一只动物相关联。
  • 疫苗接种不知道它是否与狗或猫有关。 (狗和猫使用非冲突的 GUID。)

  • 没有动物表; Animal 是一个抽象类。但是疫苗接种只知道动物,不知道狗。 (然而,EF 知道这两者。)我将我的类库拆分为 Animal 和 Vaccination 位于一个核心库中,而 Dog 位于另一个引用核心库的库中。

    使用 Entity Framework Code First 时,疫苗接种表获得额外的列:Dog_ID,因为 Dog 类的 List 显式声明正在创建推理。因此,此列将疫苗接种记录映射到狗。这很好,除了我想在多种类型的 Animal 中共享这个额外的列。因此,例如,我想要一个可以加入 Dog 或 Cat 的 Animal_ID,而不是 Dog_ID 和 Cat_ID。

    由于 Animal 是抽象的并且没有 DB 表,我可以通过流畅的语句和/或属性/属性声明来完成此操作吗?

    最佳答案

    您的 Vaccination除非您创建 Animal,否则表将始终为每种接种疫苗的动物类型提供额外的 FK 列表并与该表建立关系。 EF 不能映射和高级抽象关系 - 关系必须遵循相同的规则,就好像您直接在数据库中创建它们一样。

    如果只有一些动物可以接种疫苗,您可以将另一个表添加到层次结构并与该新表建立关系(EF 无法使用接口(interface))。您将需要 Table per Type映射,它会使您的查询性能在当前 EF 版本中变得更糟。

    关于entity-framework-4.1 - EF Code First 抽象关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6579362/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com