Я прочитал более чем в одном месте, что с помощью идентификатора NHibernate в качестве
Первичный ключ считается плохой практикой, потому что идентификатор генерируется на стороне сервера
и, следовательно, нам нужен ответ от сервера о сгенерированных идентификаторах.
(я думаю, что я также видел сообщение Ayende, в котором говорится, что у сервера ms-sql могут быть проблемы
генерация идентификатора, что может привести к нарушениям первичного ключа)
Теперь, скажем, у меня очень простая модель предметной области: блоги и посты. где каждый блог может иметь
много постов и каждый пост принадлежит ТОЧНО одному блогу (отношения один ко многим)
но МЫ ТОЛЬКО СОХРАНИМ Пост -> Блог, а не Блог -> Посты
теперь предположим, что я использую NHibernate WITH Idenitifer Id Generation, так что я не использую каскадирование, поэтому в моем коде c # есть что-то вроде этого:
SaveBlogInTransaction(blog1); <br>
SavePostsInTransaction(blog1posts);
Теперь мой вопрос заключается в следующем: если вставка может быть сделано только в одном месте в моем коде
(нет проблем с параллелизмом), гарантируется ли связь постов с их блогом в БД?
Я имею в виду, давайте посмотрим на схему таблицы сообщений:
PostId, PostName, PostType, BlogId
гарантируется ли, что BlogId будет действительным?
примечание: каждый метод работает как транзакция, и в конце он выполняет фиксацию в db