2009-10-27 30 views
1

我有问题试图用nhibernate甚至数据库建模新系统。Nhibernate建模系统指导

我有很多可以通过IP或串行COM端口连接的硬件(可能在未来会更多)。我希望能够根据它是哪一个来获得不同的信息。

我想到一个ConnectionInformation抽象类与SerialPortConnectionInformation和IPConnectionInformation。当我找回它时,检查哪一个是空的并连接到硬件。但这种感觉不对,我认为或不可能?

任何帮助都会很感激。

+1

你能说清楚'model'是什么意思吗? 你想持续发送/接收信息吗? 或者你只是想使用非特定合同与硬件进行交互? – 2009-10-27 09:39:49

+0

我想坚持硬件和不同类型的连接信息。 因此,我只需从存储库获取读取器并执行GetType或使用来找出它需要的连接信息。所以我可以连接到实际的硬件。 – Sarkie 2009-10-27 09:59:31

回答

0

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

您可能需要对术语“single-table inheritance”进行一些研究。这是一种技术,通过这种技术,单个表格包含两种类型实体的所有字段。其中一些字段对于这两种类型都是通用的,但其中一些字段只适用于一种类型或另一种类型。根据预计的性传播疾病;您通常会有一个字段,指示记录所代表的实体的“类型”,而不适用的字段将全部设置为NULL。

或者,你可以用多个表做类似的事情。您可以使用硬件表来表示常用数据,然后使用IPHardware和SerialHardware表来表示每种类型的特定数据。后两个表可以有一个对硬件表的外键引用来引用他们自己的“通用”数据。其他表通常会引用硬件表,然后根据其需要&深入查看“子类”表中硬件的类型。