Можно ли обновить / изменить первичный ключ с помощью NHibernate? - PullRequest
1 голос
/ 14 февраля 2009

У меня есть база данных, в которой используются натуральные ключи (т. Е. Бизнес-ориентированные ключи). К сожалению, из-за этого первичные ключи для этих объектов могут меняться со временем.

В настоящее время я изучаю использование NHibernate для O / RM для этой базы данных. Однако, в моем тестировании я заметил, что нет никакого очевидного способа изменить первичный ключ объекта и сохранить его в базе данных.

Например, скажем, у меня есть объект «Бизнес» с «BusinessCode» в качестве первичного ключа:

public class Business
{
    public string BusinessCode { get; set; }

    public string Name { get; set; }

    ...
}

Если я выполняю Get, меняю первичный ключ и пытаюсь сохранить его обратно в базу данных с помощью NHibernate, я получаю исключение или неожиданные результаты (в зависимости от того, использую ли я Save () , Update () или SaveOrUpdateCopy () )

Business b = session.Get<Business>("BusinessCode1");

b.BusinessCode = "BusinessCode22";

session.Update( b );

Так возможно ли что-то подобное?

Я понимаю, что многие люди NHibernate рекомендуют использовать первичные ключи, которые не меняются (то есть идентификационные данные). Но у меня есть пара БД, которые используют естественные ключи. Благодарю.

Ответы [ 2 ]

1 голос
/ 14 февраля 2009

На самом деле я понимаю, что даже задал этот вопрос, потому что могу легко смягчить это, выполнив операцию удаления-вставки. Это было скорее подтверждением концепции существующей базы данных. Спасибо за ваш вклад!

0 голосов
/ 14 февраля 2009

Вы пытались использовать составной идентификатор ?
Или присвоенные идентификаторы ?

Полное добавление поля идентификатора с автоинкрементом полностью исключено?

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