代码之家  ›  专栏  ›  技术社区  ›  silverfighter

实体框架继承:TPT、TPH还是无?

  •  15
  • silverfighter  · 技术社区  · 17 年前

    例如

    我有一个地址表:

    RecordID
    AddressTypeID
    Street
    ZipCode
    City
    Country
    

    还有一张桌子 AddressType

    RecordID
    AddressTypeDescription
    

    当人们炫耀TPT或TPH时,桌子设计不同于一般设计。。。 当采用这样的方法时,考虑继承有意义吗。。

    我希望这是有意义的。。。

    3 回复  |  直到 14 年前
        1
  •  13
  •   Oleks    14 年前

    当考虑如何在数据库中表示继承时,需要考虑一些事情。

    但是,TPH意味着您不能再拥有 NOT NULL 子类型的字段,因为所有类型的所有字段都在一个表中,将数据完整性的责任推给应用程序。虽然这在实践中听起来很可怕,但我还没有发现这是一个太大的限制。

    请注意,EF和其他ORM的优点之一是,您可以在不影响应用程序的情况下改变主意,因此决策不需要完全一成不变。

    在您的示例中,它似乎没有继承关系,从地址类型到地址,它看起来是一对多的关系

    Address.AddressType
    AddressType.Addresses
    
        2
  •  6
  •   Ash Machine    16 年前

    正如基思暗示的那样,这 article 表明EF中的TPT规模非常可怕,但我自己还没有尝试过。