우리 사무실 팀은 .NET Framework 4 및 NHibernate 3.3.1을 사용하는 ASP.NET 프로젝트를 사용합니다.Hibernate가 Database uniqueidentifier 필드에 대해 NULL로 저장되도록 System.Guid.Empty의 값을 가진 C# POCO Guid 속성을 "변환"하도록 하시겠습니까?
AllResourcesInfo라는 POCO 도메인 클래스가 있습니다 (궁극적으로 내부 데이터베이스에있는 리소스 테이블에 매핑 됨) 다른 테이블에서는 AllResourcesInfo가 Resource 테이블에 매핑된다고 가정 해 보겠습니다.
은 또한 아마도 부서와 대일 관계를 가질 수있다 (궁극적으로 데이터베이스에 부서 테이블에 매핑) 부서라는 마시고 도메인 클래스
AllResourcesInfo 있습니다.
AllResourcesInfo의 인스턴스가 부서에 속하면 AllResourcesInfo.DepartmentDatabaseID에 Department 엔터티에있는 유효한 DepartmentDatabaseID가 있습니다.
그러나 AllResourcesInfo의 인스턴스가 부서에 속하지 않으면 AllResourcesInfo.DepartmentDatabaseID의 datbase에 NULL 값이 있습니다. 데이터 베이스. 내가 NHibernate에가 (기본적으로 NHibernate에이 데이터베이스에 읽기를 수행) AllResourcesInfo 테이블에서 값을 검색하는 데 사용할 때
, NHibernate에이 00000000-0000-0000-0000-000000000000 값 AllResourcesInfo.DepartmentDatabaseID의 C# POCO 속성을 채 웁니다 (즉, AllResourcesInfo가 부서에 소속되어 있지 않은 경우 System.Guid.Empty 값)
그러나 어떤 부서에도 속하지 않는 AllResourcesInfo의 새로운 C# POCO 인스턴스를 저장하기 위해 NHibernate Session을 사용하면 POCO 00000000-0000-0000-0000-000000000000 값 (예 : System.Guid.Empty 값)을 가진 AllResourcesInfo.DepartmentDatabaseID의 속성 그러나 데이터베이스는 분명히 오류를 발생시킵니다. Guid 값 00000000-0000-0000-0000-000000000000 o 분명히 데이터베이스의 부서 테이블에 존재하지 않습니다.
요약하면, NHibernate Session Save는 uniqueidentifier 필드 값을 null로 남겨두기를 원할 때 NULL 값을 사용하여 Database의 uniqueidentifier 필드를 저장 (또는 떠나기)에 실패합니다.
혹시 NHibernate가 System.Guid.Empty 값으로 C# POCO Guid 속성을 "변환"하여 데이터베이스 uniqueidentifier 필드 값에 대해 NULL로 저장 (또는 왼쪽)하도록 보장 할 수 있습니까?
. 그러나 nullable Guid를 사용하는 대신 아무것도 표시하지 않기 위해 Guid.Empty를 사용해야하는 이유가 있습니까? – Rich