我们的办公室团队正在工作和使用 .NET Framework 4 和 NHibernate 3.3.1 的 ASP.NET 项目
我有一个名为 AllResourcesInfo 的 POCO 域类(它最终映射到数据库中的 Resource 表,该表内部连接到其他一些表,但为了简单起见,假设 AllResourcesInfo 映射到 Resource 表)。
我还有一个名为 Department 的 POCO 域类(最终映射到数据库中的 Department 表)
AllResourcesInfo 可能与部门具有多对一关系。
如果 AllResourcesInfo 的实例属于某个部门,则 AllResourcesInfo.DepartmentDatabaseID 具有有效的 DepartmentDatabaseID,它位于 Department 实体中。
但是,如果 AllResourcesInfo 的实例不属于某个部门,则 AllResourcesInfo.DepartmentDatabaseID 在数据库中具有 NULL 值。数据库。
当我使用 NHibernate 从 AllResourcesInfo 表中检索(基本上 NHibernate 对数据库进行读取)值时,NHibernate 将使用 00000000-0000-0000-0000-000000000000 值填充 AllResourcesInfo.DepartmentDatabaseID 的 C# POCO 属性(即 System.Guid .Empty value ) 如果 AllResourcesInfo 不属于某个部门
但是,当我使用 NHibernate Session 保存不属于任何部门的 AllResourcesInfo 的全新 C# POCO 实例时,我使用 00000000-0000-0000-0000-000000000000 值填充 AllResourcesInfo.DepartmentDatabaseID 的 POCO 属性(即系统.Guid.Empty value ) 但是数据库显然会抛出错误,因为数据库的 Department 表中显然不存在 Guid 值 00000000-0000-0000-0000-000000000000。
总而言之,当我们希望 NHibernate Session Save 将 uniqueidentifier 字段值保留为空时,NHibernate Session Save 无法在数据库中保存(或保留)值为 NULL 的 uniqueidentifier 字段。
有人可以告诉我我们如何确保 NHibernate“翻译”值为 System.Guid.Empty 的 C# POCO Guid 属性被保存(或保留)为 NULL 用于数据库 uniqueidentifier 字段值?