2011-02-27 3 views
1

NHibernate가 엔티티 ID가 -1 일 때 데이터베이스에 NULL을 할당 (지속)하는 간단한 규칙을 구현하고자합니다. 예를 들어, 데이터베이스에 NULL로 유지되어야하는 "시스템 내"계정이 있습니다.ID가 0 일 때 NHibernate 쓰기 값 = NULL

-1의 ID를 데이터베이스에 유지하려고하면 외부 테이블에 ID가 없기 때문에 외래 키 예외가 발생합니다.

우리는 FluentNhibernate와 함께 NHibernate를 사용하고 있습니다.

답변

1

여러분이 엔티티의 적절한 매핑을하지 않았다고 생각합니다. 그것이 맞다면, 당신은 어떤 트릭을 만들어야한다 : 당신은 ID를 보지 말고, 다른 엔티티에 대한 참조를보아야한다.이 경우 null 값을 가진 참조를 지속시킬 것이다. 잘못된 경우에도이 ID가 nullable 인 경우 ID로 표현 된 참조로 엔티티를 매핑하려는 경우 (거의 항상 잘못됨) int를 가질 수 있도록 nullable로 매핑할까요? -1 트릭 대신 널 (NULL)을 널 (null)로 채울 수 있습니다. 된 OnSave 작업 및 null를 더미 엔티티를 대체하여 특별한 경우를 치료 : 사용자 지정 엔터티가 내부적으로 null 값으로 사용되는 경우

참조가

댓글, 세션 인터셉터는 도움이 될 수. NH 인터셉터에 대해 Here you can find the documentation 동일한 문서의 11.2 장에는 이벤트와 관련된 부분이 있으며, 이와 같은 종류의 문제에 해당합니다.

+0

펠리체 감사합니다. 나는 분명히해야한다. ID 자체가 아니라 개체에 대한 참조를 유지합니다. ID = -1 인 내부 객체를 애플리케이션 내부에 생성합니다. 이 엔티티가 속성에 할당 된 경우 데이터베이스에 유지 된 속성 값은 NULL이어야합니다. – Wozart

+0

Ok, 감사합니다. 답장을 연장합니다. –

+0

감사합니다. 인터셉터가 NHibernate 최신 버전의 이벤트로 대체되었다고 읽었습니다. OnLoad 및 OnSave를 만들기 위해 필요한 이벤트 리스너는 무엇입니까? – Wozart

관련 문제