나는 NHibernate의 Identifier를 으로 사용하는 곳을 한 곳 이상 읽었습니다. id가 서버 측에서 생성되었으므로 기본 키는 나쁜 습관으로 간주됩니다. 그러므로 서버에 대한 응답이 필요합니다. 생성 된 ID. 이의 내가 아주 간단한 도메인 모델이 있다고 가정 해 보자, 지금NHibernate Identifier Identity Generator 사용
을 (나는 또한 MS-SQL 서버 식별자를 생성 문제가있을 수 있으며,이 기본 키 위반을 일으킬 수 있다고 Ayende에 의해 게시물을 본 생각) : 블로그 및 게시물. 모든 블로그 많은 게시물을 가질 수 있고 각 게시물은 정확히 한 블로그 (한 많은 관계) 에 속하는 하지만 우리는 단지 포스트 SAVE 곳 -> 블로그 관계가 아닌 블로그 -> 게시물
지금내가 사용하는 가정을 NHibernate에 함께 Idenitifer 아이디 생성 등의 난 그래서 내가 이런 내 C# 코드 뭔가가 계단식을 사용하지 않는 것이 :
지금 SaveBlogInTransaction(blog1);
SavePostsInTransaction(blog1posts);
, 내 질문은 이것이다 : 삽입이 한 장소에서만 할 수 있으면 내 코드 (동시성 문제는 없습니다), 게시물의 'th DB에 eir 블로그가 유효할까요?
PostId, PostName, PostType, BlogId
이는 BlogId이 유효 할 것이라는 점을 보장 할 수 있습니다 :
난의이 게시물 '테이블 스키마를 살펴 보자 의미?
참고 : 각 방법은 트랜잭션으로하고 그것이 그것은 당신의 매핑에 따라 달라 dB
나는 다른 생성기 전략을 사용하여 NHibernate가 삽입 된 ID를 얻기 위해 데이터베이스를 질의 할 필요가 없기 때문에 더 효과적인 trasnsaction을 할 것이라고 Sean과 동의한다. –