Возможно ли иметь составной идентификатор, который можно редактировать в NHibernate? - PullRequest
1 голос
/ 19 июня 2010

У меня есть ситуация, когда у меня есть таблицы, в которых много столбцов используются в качестве составного первичного ключа,

Хуже бизнес-логики требует, чтобы они были изменяемыми.

Я использую nhibernate и у меня нет проблем с отображением их загрузки / сохранения. Однако мне нужно иметь возможность обновлять значения свойств и отражать эти изменения в БД при вызове update.

Это устаревшая система, поэтому нет никаких изменений в структуре БД (это ужасно).

Что я могу сделать с nhibernate, чтобы решить эту проблему? разрешает ли nhibernate изменять ключи.

Я использую: .net4.0, nhibernate 2.1, fluentnh 1.0 и SQL Server в качестве бэкэнда.

Ответы [ 2 ]

1 голос
/ 19 июня 2010

Нельзя сменить ПК с помощью NHibernate. Как вы уже поняли, структура, с которой вы имеете дело, просто ужасна.

Что вы можете сделать, это использовать SQL-запросы для изменения PK. Имейте в виду, что вам придется перезагрузить объект с новым идентификатором, прежде чем использовать его снова.

0 голосов
/ 20 июня 2010

На самом деле вы не обязаны отображать схему базы данных как есть на объект домена.

У меня есть приложение, которое имеет структуру объекта, которая не может быть реально представлена ​​в базе данных, поскольку NHibernate понимает семантику: для этого потребуется составной идентификатор из 3 столбцов, но суть в том, что есть случаи, когда 2 столбца изменяются.Поэтому я сопоставил одно свойство столбца как PK и автоматизировал использование двух других, получив лучшее из двух миров.

Обратите внимание, что в этих случаях кэширование 2-го уровня - это большое нет-нет!

...