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

NHibernate建模系统指南

  •  1
  • Sarkie  · 技术社区  · 15 年前

    我在尝试用NHibernate甚至数据库来建立一个新系统时遇到了一些问题。

    我有很多硬件可以通过IP或串行COM端口连接(将来可能更多)。我想根据信息的不同而有不同的信息。

    我在想一个带有serialPortConnectionInformation和ipConnectionInformation的ConnectionInformation抽象类。当我取回它时,检查哪个是空的并连接到硬件。但我觉得这是错误的还是不可能的?

    任何帮助都会心存感激。

    1 回复  |  直到 15 年前
        1
  •  0
  •   Craig Walker    15 年前

    我想我明白你在问什么。您有两种类型的实体,它们之间可能共享一些公共信息(特别是,“我连接到什么?”)但是有很多基本的区别(我可以想象,基于IP的设备有一个“IP地址”字段,而基于串行的设备没有)。

    你可能想对这个词做些研究” single-table inheritance “。这是一种技术,单表包含两种类型实体的所有字段。其中一些字段对这两种类型都是通用的,但其中一些字段只适用于一种类型或另一种类型。在预期的sti下,通常有一个字段指示记录表示的实体的“类型”,而不适用的字段都将设置为空。

    或者,您可以对多个表执行类似的操作。您可以有一个硬件表来表示公共数据,然后有一个iphardware和serialhardware表来表示特定于每种类型的数据。然后,后两个表可以具有对硬件表的外键引用,以引用它们自己的“公共”数据。其他表通常引用硬件表,然后根据需要和硬件类型向下钻取到“子类”表中。