MySQL이 nhibernate를 사용하여 삽입 된 객체에 기본 키를 할당하도록 허용하려면 어떻게해야합니까? 생성기를 "ID"유형으로 설정하려고하지만 문서에서 "..resquire [s] 두 SQL 쿼리를 사용하여 새 개체를 삽입하십시오." 왜 그렇게했을까요? 정상적인 삽입 SQL 문처럼이 기능을 사용할 수있는 방법이 있습니까?데이터베이스에서 nhibernate의 기본 키를 선택하도록
1
A
답변
2
두 개의 쿼리가 필요한 이유는 ID가 있으면 열이 삽입 될 때까지 열 값이 정의되지 않기 때문입니다. 따라서 삽입 된 객체에 대한 열 값을 가져 오기 위해서는 select after insert가 필요합니다. 이것은 꽤 표준이며, 자동 생성 된 키를 기본 키로 사용하지 못하게합니다. 다른 옵션은 키를 미리 생성하는 것입니다. 예를 들어 새 객체에 대한 GUID를 데이터베이스에 유지하기 전에 말입니다. 대부분의 경우 자동 생성 된 키가 충돌 할 수있는 별도의 데이터베이스에서 데이터를 병합해야하는 등의 완화 조치가없는 한 이점을 실제로 볼 수 없습니다.
2
분명히 장점이 있습니다. NHibernate가 id 생성기로 Guids 나 Hilo를 사용하게하면 Hibernate에서 매우 멋진 기능인 일괄 처리가 가능해집니다. 일괄 처리를 사용하기 위해 Hibernate를 설정하면 (예를 들어, 1000 문장), 삽입이 갑자기 매우 빠릅니다.
Fabio는 다양한 사용 가능 생성자에 대한 게시물을 가지고 있습니다. here - NHibernate를 사용하거나 (NHibernate가 잘못 수행한다고 생각하는 사람을 알고있는 경우) 매우 유용합니다.
관련 문제
- 1. NHibernate의 SchemaUpdate는 PostgreSQL 데이터베이스에서 아무런 역할을하지 않습니다.
- 2. 새 데이터베이스에서 기존 기본 키를 병합하고 삭제하는 방법은 무엇입니까?
- 3. Oracle 데이터베이스에서 자동 증가 Guid 기본 키를 만드는 방법이 있습니까?
- 4. NHibernate의 예약어
- 5. Fluent nHibernate의 기본 클래스 목록 저장
- 6. 기본 키를 만드는 방법은 문자입니까? 나는이 같은 기본 키를 만들
- 7. DataGridView가 기본 키를 삽입합니다.
- 8. 복합 키를 사용하여 NHibernate의 ISession.Get <>()을 사용하십시오.
- 9. 기본 데이터베이스에서 데이터 유형 검색
- 10. MySQL에서 기본 키를 삭제하려면 어떻게합니까?
- 11. iBatis가 테이블에 기본 키를 적용합니까?
- 12. MySQL 데이터베이스 기본 키를 사용
- 13. 기본 키를 인증하는 방법은 무엇입니까?
- 14. 기본 키를 사용해야하는 이유는 무엇입니까?
- 15. 데이터 테이블의 기본 키를 제거하십시오
- 16. MySQL에서 SELECT를 사용하여 기본 키를
- 17. NHibernate의 투영
- 18. Nhibernate의 실제 복잡한 예제
- 19. NHibernate의 상속과 연관
- 20. uniqueidentifier 기본 키를 가진 엔티티 획득 문제
- 21. NHibernate의 many to many association을 매핑하는 법
- 22. 매핑하여 Nhibernate의 기본 테이블에서 값을 가져 오는 방법은 무엇입니까?
- 23. 데이터 전송 개체의 속성이 외래 키를 확장하거나 기본 키를 노출해야합니까?
- 24. .net obfuscator 프로그램을 선택하도록 도움을 주시겠습니까?
- 25. 기본 테이블의 기본 키를 종속 테이블의 외래 키 필드로 전달해야합니다.
- 26. Hibernate/NHibernate의 Enum 테이블
- 27. 유창한 nHibernate의 동적 테이블
- 28. NHibernate의 다중 인터셉터
- 29. NHibernate의 매핑 오류
- 30. NHibernate의 조건부 관계