NHibernate Guid发电机如果是新的

was*_*abi 6 nhibernate

我希望NHibernate只有在没有由用户或应用程序手动设置时才为实体生成guid.基本上,当使用新的Guid()(全零)保存对象时,NHibernate应该生成一个.保存具有非零Guid的对象时,应该使用它.

我唯一的选择是编写自己的发电机吗?

编辑伙计,我知道'已分配'.我应该指明我知道它.由于它不能做我想做的事,它不是我正在寻找的选项.编写我自己的生成器是一个有效的选项,但我想要别的东西.我怀疑没有别的东西.

Rip*_*ppo 1

您是否尝试过设置unsaved-value属性?

<id name="Id" column="Id" type="Guid" unsaved-value="00000000-0000-0000-0000-000000000000">
  <generator class="guid.comb" />
</id>
Run Code Online (Sandbox Code Playgroud)

现在编辑我完全理解你的问题,除了推出你自己的生成器之外,另一种选择是使用

<generator class="assigned" /> 
Run Code Online (Sandbox Code Playgroud)

但是您不能使用SaveOrUpdate(). 相反,您必须通过调用 ISession 的 Save() 或 Update() 方法显式指定 NHibernate 是否应保存或更新对象。此外,您始终需要在所有新实体上手动设置 GUID。这是一个选择。