私たちのオフィスチームは、.NETFramework4とNHibernate3.3.1を使用するASP.NETプロジェクトに取り組んでいます。
AllResourcesInfoというPOCOドメインクラスがあります(これは、最終的には他のテーブルに内部結合されているデータベース内のResourceテーブルにマップされますが、簡単にするために、AllResourcesInfoはResourceテーブルにマップされるとしましょう)。
また、DepartmentというPOCOドメインクラスがあります(これは最終的にデータベースのDepartmentテーブルにマップされます)。
AllResourcesInfoは、部門と多対1の関係を持つ可能性があります。
AllResourcesInfoのインスタンスが部門に属している場合、AllResourcesInfo.DepartmentDatabaseIDには、Departmentエンティティにある有効なDepartmentDatabaseIDがあります。
ただし、AllResourcesInfoのインスタンスが部門に属していない場合、AllResourcesInfo.DepartmentDatabaseIDのデータベースの値はNULLになります。データベース。
NHibernateを使用してAllResourcesInfoテーブルから値を取得する(基本的にNHibernateはデータベースの読み取りを行う)と、NHibernateはAllResourcesInfo.DepartmentDatabaseIDのC#POCOプロパティに00000000-0000-0000-0000-000000000000値(つまり、System.Guid)を入力します。 .Empty value)AllResourcesInfoが部門に属していない場合
ただし、NHibernate Sessionを使用して、どの部門にも属していないAllResourcesInfoの新しいC#POCOインスタンスを保存する場合、AllResourcesInfo.DepartmentDatabaseIDのPOCOプロパティに00000000-0000-0000-0000-000000000000値(つまり、システム)を入力します。 .Guid.Empty value)しかし、00000000-0000-0000-0000-000000000000のGUID値がデータベースのDepartmentテーブルに存在しないため、データベースは明らかにエラーをスローします。
要約すると、NHibernate Session Saveは、uniqueidentifierフィールドの値をnullのままにしたい場合、データベース内のuniqueidentifierフィールドをNULLの値で保存(または残す)できません。
NHibernateがSystem.Guid.Emptyの値を持つC#POCO Guidプロパティをデータベースのuniqueidentifierフィールド値に対してNULLとして保存(または残)することを保証する方法を教えてください。