我在尝试使用nhibernate甚至数据库建模新系统时遇到了问题。
我有很多可以通过IP或串行端口连接的硬件(将来可能更多)。我希望能够根据不同的信息获得不同的信息。
我在考虑使用SerialPortConnectionInformation和IPConnectionInformation的ConnectionInformation抽象类。当我找回它时,检查哪一个为空并连接到硬件。但这种想法或不可能是错误的?
任何帮助都会非常感激。
答案 0 :(得分:0)
我想我明白你在问什么。你有两种类型的实体可以在它们之间共享一些共同信息(特别是“我连接到什么?”),但有很多根本区别(我可以想象基于IP的设备有一个“IP的字段”地址“而基于串行的那些不会。”
您可能希望对术语“single-table inheritance”进行一些研究。这是一种技术,其中单个表包含两种类型实体的所有字段。其中一些字段对两种类型都是通用的,但其中一些仅适用于一种类型或另一种类型。根据STI的预期;您通常有一个字段,指示记录所代表的实体的“类型”,并且不适用的字段都将设置为NULL。
或者,你可以用多个表做类似的事情。您可以使用Hardware表来表示公共数据,然后使用IPHardware和SerialHardware表来表示特定于每种类型的数据。然后,后两个表可以具有对Hardware表的外键引用,以引用它们自己的“公共”数据。其他表通常会引用Hardware表,然后根据需要深入到“子类”表中。硬件的类型。