2010-05-01 5 views
0

Я хочу изменить первичный ключ объекта в базе данных, так что все соответствующие ограничения внешнего ключа также обновляются./Мы используем NHibenate в качестве нашего ORM.Как изменить первичный ключ с помощью NHibernate

Возможно ли это?

Спасибо.

P.S.

Я знаю, что практика изменения первичного ключа сильно обескуражена. Моя проблема заключается в том, что мой первичный ключ поддерживается естественным идентификатором объекта, который может иногда меняться. Теоретически мы могли бы использовать уникальный первичный ключ, не связанный с естественным ключом объекта, но это слишком усложняет ситуацию в других местах, поэтому это не вариант.

+0

Я хотел бы знать, как это «слишком усложняет ситуацию в других местах». Я использовал суррогатные ключи (а иногда и естественные ключи) для * лет * и почти всегда обнаружил, что он * упрощает * вещи. – Aaronaught

+0

Ну, используя суррогатные ключи потребует, чтобы сервер выполнял дополнительные поисковые запросы в базе данных или поддерживал локальный кеш определенных объектов. Это была слишком большая работа, пока не наступила необходимость изменить естественные ключи. Думаю, мне пришлось бы переключиться на суррогатные ключи и просто усвоить сложность. – mark

ответ

1

Я не понимаю вашего вопроса .... nHibernate - это просто отображение вашей базы данных. Кажется, что делать то, что вы предлагаете, вам просто нужно изменить свою базу данных на все, что вам нужно, переделать ваши файлы сопоставления, а затем изменить любые запросы, которые должны соответствовать новой схеме ...

0

Нет, это это невозможно. NHibernate будет жаловаться, если вы попытаетесь это сделать.

Единственный способ сделать это «из» NHibernate использует CreateSQLQuery.

Смежные вопросы