我想知道的是NHibernate
为Id字段分配/生成值的时间。将实体保存到存储库后?我需要使用Product Id
来构建复合文件名。但是当我在将实体保存到存储库之前使用Id
时,我得到Guid.Empty
。
谢谢!
答案 0 :(得分:4)
我想知道为什么在保存之前需要使用Id
?在成功提交到数据库后使用Id
肯定是正确的方法。毕竟如果您使用Id
,然后发现数据库没有保留实体,那么这将给您带来不必要的副作用。
然而,有一种解决方法,但它不是很好。
将id
生成器设置为已分配。这有一些警告,你不能使用SaveOrUpdate
,因为NHibernate将无法检测到这是一个新实体或需要更新的实体。这意味着您应该明确使用Save
或Update
方法
答案 1 :(得分:0)
请参阅以下链接以获取答案
http://nhibernate.info/doc/nh/en/index.html#mapping-declaration-id
“但是当我在将实体保存到存储库之前使用Id时,我会获得Guid.Empty” - >只有当记录保存到数据库中时才会生成id ...如果您之前需要id,我建议使用已分配 id生成器,您可以在记录保存到db。之前生成您的id。