Отображение таблицы соответствия в класс - PullRequest
0 голосов
/ 16 сентября 2009

У меня есть справочная / справочная таблица, основная цель которой - предоставить пользователю список существующих опций. У пользователя также будет возможность вводить новые элементы в список. Как бы вы отобразили это в NHibernate?

Например, скажем, у меня есть класс Address с полем City. База данных имеет адресную таблицу и справочную таблицу города. (Я могу определить отношения так, как я хочу на этом этапе.) При редактировании адреса:

  • Пользователь может выбрать любой доступный Город или ввести новый Город.
  • Введенный новый город должен быть добавлен в таблицу поиска.
  • Редактирование города экземпляра Address должно либо изменить ссылку - если отредактированный город также существует в БД - либо создать новую запись City с этим именем и обратиться к ней. (Если я изменю «Чикаго» на «Нью-Йорк», я не хочу, чтобы все адреса в Чикаго сменились на Нью-Йорк; только на тот, на который я смотрю.)

Я изучал документы NHib и совершенно не уверен, какой подход выбрать.

EDIT:

Часть моей проблемы связана с тем, что я пытаюсь избежать создания класса "City" с одним свойством - я бы просто хотел, чтобы Address.City был строкой в ​​доменной модели. Это может быть неразумно, я не знаю.

1 Ответ

1 голос
/ 17 сентября 2009

Итак, у вас есть адреса, и вы хотите получить четкий список городов. Вам нужно будет выполнить «отдельную» операцию в вашем коде или в базе данных. Выполнение этого в коде подразумевает класс City, сопоставленный с вашей таблицей City - я не понимаю, как вы можете этого избежать.

Если «отдельная» операция выполняется в базе данных, вам потребуется написать sprocs для вставки и обновления адреса. Эти sprocs будут содержать логику «использовать город, если он находится в таблице, в противном случае создайте новый».

Лично я не одобряю sprocs, если их можно избежать, поэтому я рекомендую вам создать класс City и сопоставить его с классом Address.

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