Руководство по моделированию системы с Nhibernate - PullRequest
1 голос
/ 27 октября 2009

У меня возникают проблемы при попытке смоделировать новую систему с использованием nhibernate или даже баз данных.

У меня много оборудования, которое можно подключить через IP или последовательный порт (возможно, в будущем). Я хочу иметь возможность получать различную информацию в зависимости от того, какая она есть.

Я думал об абстрактном классе ConnectionInformation с SerialPortConnectionInformation и IPConnectionInformation. Когда я получу его обратно, проверьте, какой из них является нулевым, и подключитесь к оборудованию. Но мне кажется, что это неправильно или невозможно?

Любая помощь была бы очень благодарна.

1 Ответ

0 голосов
/ 22 декабря 2009

Мне кажется, я понимаю, о чем вы спрашиваете. У вас есть два типа объектов, которые могут обмениваться некоторой общей информацией между ними (в частности, «С чем я связан?»), Но у вас есть много принципиальных отличий (я мог бы представить устройства на базе IP, имеющие поле для «IP Адрес ", в то время как на основе Serial не будет).

Возможно, вы захотите провести исследование термина " наследование одной таблицы ". Это метод, при котором одна таблица содержит все поля для обоих типов объектов. Некоторые из этих полей будут общими для обоих типов, но некоторые из них будут применимы только к одному типу или другому. Под STI это ожидается; У вас обычно есть поле, которое указывает, какой «тип» сущности представляет запись, а все неприменимые поля будут установлены в NULL.

Кроме того, вы можете сделать аналогичную вещь с несколькими таблицами. Вы можете иметь таблицу оборудования для представления общих данных, а затем таблицы IPHardware и SerialHardware для представления данных, характерных для каждого типа. Две последние таблицы могут затем иметь ссылку внешнего ключа на таблицу оборудования, чтобы сделать ссылку на их собственные «общие» данные. Другие таблицы обычно ссылаются на таблицу «Оборудование», а затем переходят к таблицам «подкласса» в зависимости от их потребностей и типа оборудования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...