如果我为它分配一个ID,我如何让NHibernate保存一个实体,否则生成一个实体?

时间:2010-10-08 00:23:08

标签: nhibernate rest fluent-nhibernate nhibernate-mapping identity

根据REST原则,PUT请求应更新URL上的资源(如果存在),并在不存在时创建它。换句话说,如果我使用以下URL:

PUT http://server/item/5

如果存在ID为5的Item,则会更新。如果ID为5的Item不存在,则会创建ID为5的新Item

但是,我使用NHibernate进行持久化,并将我的ID映射为Identity。这意味着无论我分配ID的值是什么,当我保存新的Item时,NHibernate将用它自己替换它。

如何让NHibernate使用我指定的ID保存Item,而不将ID映射更改为Assigned

1 个答案:

答案 0 :(得分:2)

如果您使用Identity,则DB不允许您输入值。

也就是说,如果你的数据库有一些特殊的语法允许在Identity字段中插入显式值,你可以实现自己的生成器,我保证它容易出错,难以调试,并且不是很有用。但这是可能的。

研究https://nhibernate.svn.sourceforge.net/svnroot/nhibernate/trunk/nhibernate/src/NHibernate/Id中的所有内容并开始创建您的Frankenstein: - )