何时在NHibernate中生成ID

时间:2012-03-06 06:46:16

标签: c# nhibernate

我想知道的是NHibernate为Id字段分配/生成值的时间。将实体保存到存储库后?我需要使用Product Id来构建复合文件名。但是当我在将实体保存到存储库之前使用Id时,我得到Guid.Empty

谢谢!

2 个答案:

答案 0 :(得分:4)

我想知道为什么在保存之前需要使用Id?在成功提交到数据库后使用Id肯定是正确的方法。毕竟如果您使用Id,然后发现数据库没有保留实体,那么这将给您带来不必要的副作用。

然而,有一种解决方法,但它不是很好。

id生成器设置为已分配。这有一些警告,你不能使用SaveOrUpdate,因为NHibernate将无法检测到这是一个新实体或需要更新的实体。这意味着您应该明确使用SaveUpdate方法

答案 1 :(得分:0)

请参阅以下链接以获取答案

http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-id

“但是当我在将实体保存到存储库之前使用Id时,我会获得Guid.Empty”   - >只有当记录保存到数据库中时才会生成id ...如果您之前需要id,我建议使用已分配 id生成器,您可以在记录保存到db。之前生成您的id。