У меня есть база данных, в которой используются натуральные ключи (т. Е. Бизнес-ориентированные ключи). К сожалению, из-за этого первичные ключи для этих объектов могут меняться со временем.
В настоящее время я изучаю использование 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 рекомендуют использовать первичные ключи, которые не меняются (то есть идентификационные данные). Но у меня есть пара БД, которые используют естественные ключи. Благодарю.