如何使用 NHibernate 映射 newsequentialid
How to map newsequentialid with NHibernate
我正在使用 SQL 服务器 FileTable 和 NHibernate。
在插入时,NHibernate 将调用一个存储过程将记录插入到 FileTable 中。我遇到的问题是 FileTable 中的 Id (stream_id
) 列是由 SQL 服务器在插入时生成的。它由默认约束newsequentialid()
.
生成
如何 return 我的存储过程中的那个 ID 并将其映射到我的实体的 ID 属性?
更新:
关于另一个问题:[NHibernate 使用存储过程或映射][1]
这在这里不适用。我正在使用存储过程来插入实体。该存储过程必须 return 数据库在插入时生成的 Guid 类型的 Id。我希望 NHibernate 将此 id 映射到实体。
我需要类似 Generators.TriggerIdentity 的东西,但用于 Guid 而不是 Int。
更新2:
我设法通过将其 ID 生成策略设置为 'Native' 并从存储过程中选择 return 值来填充我的 Entity.Id。但这会破坏事务,因为要获取 Id,它需要转到数据库并执行插入操作。
我通过将 Id 生成器更改为 Generators.Native 设法解决了这个问题。
然后我不得不 return 从存储过程中插入的 id。
我正在使用 SQL 服务器 FileTable 和 NHibernate。
在插入时,NHibernate 将调用一个存储过程将记录插入到 FileTable 中。我遇到的问题是 FileTable 中的 Id (stream_id
) 列是由 SQL 服务器在插入时生成的。它由默认约束newsequentialid()
.
如何 return 我的存储过程中的那个 ID 并将其映射到我的实体的 ID 属性?
更新:
关于另一个问题:[NHibernate 使用存储过程或映射][1] 这在这里不适用。我正在使用存储过程来插入实体。该存储过程必须 return 数据库在插入时生成的 Guid 类型的 Id。我希望 NHibernate 将此 id 映射到实体。
我需要类似 Generators.TriggerIdentity 的东西,但用于 Guid 而不是 Int。
更新2:
我设法通过将其 ID 生成策略设置为 'Native' 并从存储过程中选择 return 值来填充我的 Entity.Id。但这会破坏事务,因为要获取 Id,它需要转到数据库并执行插入操作。
我通过将 Id 生成器更改为 Generators.Native 设法解决了这个问题。 然后我不得不 return 从存储过程中插入的 id。