Генератор идентификаторов Nhibernate или автоинкремент MySQL - PullRequest
0 голосов
/ 26 апреля 2018

Я только начинаю свое приключение с написания приложения, которое должно работать с базой данных. Я начал с разработки своей базы данных в MySQL Workbench, экспортировал этот проект на сервер, и теперь я хочу попробовать написать код, который сможет общаться с этим сервером.

Я решил попробовать использовать NHibernate, но я застрял при написании сопоставлений для свойства / столбца Id / Primary key. Я прочитал, что я должен указать генератор, но значит ли это, что я должен удалить автоинкремент из этого столбца в базе данных?

Если ответ на предыдущий вопрос отрицательный, то какой генератор NH будет работать правильно с генератором автоинкремента, управляемым сервером. Если это положительно, то какой генератор предпочтительнее? Или, может быть, даже если NH может работать с ИИ сервера, вы все равно порекомендуете удалить ИИ из столбцов и использовать клиентский генератор (опять же, какой?).

1 Ответ

0 голосов
/ 22 мая 2018

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

Моя проблема здесь заключалась в понимании названия функциональности - ГЕНЕРАТОР. Если у вас есть серверный генератор (автоинкремент), зачем вам нужен другой в вашем приложении? Это было источником моей ошибки. На самом деле, это в генераторе приложений не должно генерировать что-либо, оно может извлекать данные из базы данных, но, тем не менее, для этого приложения это не будет иметь никакого значения.

Итак, TL; DR Как писал @ RadimKöhler в своем комментарии к моему вопросу, оба параметра native и identity хорошо работают со столбцом автоинкремента / идентификатора (или любого другого имени, используемого вашим механизмом базы данных) в базе данных.

сейчас, время для цитаты:

ПРИМЕЧАНИЕ: я годами живу с идентичностью ... но если бы я мог выбрать, то я бы выбрал последовательность или HILO. Это не требует реального INSERT, чтобы позволить БД генерировать ключ ...

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

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