Nhibernate建模系统指南

Nhibernate建模系统指南,nhibernate,database-design,Nhibernate,Database Design,我在尝试用nhibernate甚至数据库对新系统建模时遇到了问题 我有很多可以通过IP或串行Com端口连接的硬件(将来可能会更多)。我希望能够有不同的信息,这取决于它是哪一个 我正在考虑一个带有SerialPortConnectionInformation和IPConnectionInformation的ConnectionInformation抽象类。当我把它拿回来时,检查哪一个是空的,然后连接到硬件。但我觉得这是错的还是不可能的 任何帮助都会非常感激 我想我明白你在问什么。您有两种类型的实体

我在尝试用nhibernate甚至数据库对新系统建模时遇到了问题

我有很多可以通过IP或串行Com端口连接的硬件(将来可能会更多)。我希望能够有不同的信息,这取决于它是哪一个

我正在考虑一个带有SerialPortConnectionInformation和IPConnectionInformation的ConnectionInformation抽象类。当我把它拿回来时,检查哪一个是空的,然后连接到硬件。但我觉得这是错的还是不可能的


任何帮助都会非常感激

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

你可能想对术语“进行研究”。这是一种技术,其中一个表包含两种类型实体的所有字段。其中一些字段对这两种类型都是通用的,但其中一些字段仅适用于一种类型或另一种类型。在STI下,这是意料之中的;您通常有一个字段来指示记录所代表的实体的“类型”,不适用的字段都将设置为NULL


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

您能澄清一下“型号”是什么意思吗?是否要保留正在发送/接收的信息?或者您只是想使用非特定契约与硬件交互?我想持久化硬件和不同类型的连接信息。因此,我可以从存储库中获取读取器,然后执行GetType或use来确定它需要什么样的连接信息。所以我可以连接到实际的硬件。