【发布时间】:2010-10-23 21:58:22
【问题描述】:
根据 REST 哲学,PUT 操作应该创建一个实体(如果它不存在),或者更新它(如果存在)。因此,例如,如果客户端执行此操作:
PUT http://server/user/5?firstname=John&lastname=Doe
我应该期望创建或更新 ID 为 5 的用户。
update 使用 NHibernate 很容易;只需检索用户并更新名字和姓氏。
但是,如何创建 ID 为 5 的用户?默认情况下,NHibernate 管理所有实体 ID。即使您自己设置了 ID,NHibernate 也会忽略它并用自己的 ID 替换它。如果我切换到使用分配的 ID,那么我可以分配一个 ID 为 5 的新用户,但是我会失去很多 NHibernate 的功能。
也就是说,有没有办法配置 NHibernate 使用生成的 ID(如果未提供),如果提供则使用用户设置的 ID?如果没有,我该如何解决使用 NHibernate 创建 PUT 的问题?
【问题讨论】:
-
有趣的是,我们对 EntityFramework 有同样的问题(非常关注)。几乎就像您需要以编程方式设置
IDENTITY_INSERT一样。有兴趣看看你是否找到答案。 +1 -
好问题。只是出于好奇,如果还没有创建用户,那么 5 的 ID 是从哪里来的?您似乎是在说您希望您的用户拥有该 ID,但您还不知道哪些 ID 可用。
-
这个问题和你之前的问题有什么不同?
-
@Diego:不是,但我想也许以不同的方式再次询问会得到不同的答案。这似乎是应该多次解决的基本问题之一,但我似乎找不到任何答案。每次我问这个问题,我都会得到几个点赞和星星,所以这似乎是其他人关心的问题。
标签: c# nhibernate rest fluent-nhibernate identity