NHibernate - как легко отобразить свойство на основе идентификатора, чтобы быть одним путем от модели домена до базы данных - PullRequest
1 голос
/ 15 августа 2011

Внутри моего приложения сущность идентифицируется строковым ключом - представление baseN его идентификатора, например xAdWzC, которое представляет собой BaseN (52) представление числового идентификатора.

числовой идентификатор генерируется с использованием аналога оракулаалгоритм последовательности, перед вставкой (мой собственный генератор идентификаторов).

Как мне сопоставить мой класс, который в основном имеет 2 представления Id для сохранения в БД с 2 столбцами: один числовой - первичный ключ, а другой - строкаключ для идентификации строк в БД лучше?Я, очевидно, не нуждаюсь в 2 первичных ключах и предпочел бы числовой PK.

Строковый ключ - это просто свойство, которое заключает в себе числовой ключ в C #, например:

public string Key
{
     get { return BaseNFunction(Id); }
}

В основном я хочу, чтобы это отображение былобыть одним из способов дБ.Когда элемент загружается из базы данных, этот столбец должен полностью игнорироваться.

Как будет выглядеть отображение NHB?Вопрос сложный или его просто не заметили?Я не думаю, что это стоит награды, но, пожалуйста, помогите мне.

Ответы [ 2 ]

2 голосов
/ 18 августа 2011

Просто сделайте сгенерированное свойство доступным только для чтения (это access="readonly" в XML; ищите что-то похожее на беглом языке)

Только для чтения в этом случае означает свойство читается из сущности и записывается вБД, но не наоборот

0 голосов
/ 15 августа 2011

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

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