2009-10-27 47 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表來表示每種類型的特定數據。後兩個表可以有一個對硬件表的外鍵引用來引用他們自己的「通用」數據。其他表通常會引用硬件表,然後根據其需要&深入查看「子類」表中硬件的類型。