gpt4 book ai didi

c# - 如何使用 NHibernate 通过 RESTful PUT 创建实体?

转载 作者:行者123 更新时间:2023-11-30 18:43:41 24 4
gpt4 key购买 nike

根据 REST 哲学,PUT 操作应该创建一个实体(如果它不存在),或者更新(如果存在)。因此,例如,如果客户端执行此操作:

PUT http://server/user/5?firstname=John&lastname=Doe

我应该期望创建或更新 ID 为 5 的用户。

使用 NHibernate,更新 情况很容易;只需检索用户并更新名字和姓氏。

但是,如何创建 ID 为 5 的用户?默认情况下,NHibernate 管理所有实体 ID。即使您自己设置了 ID,NHibernate 也会忽略它并用自己的 ID 替换它。如果我切换到使用分配的 ID,那么我可以分配一个 ID 为 5 的新用户,但是我会失去很多 NHibernate 的功能。

那么换句话说,有没有办法配置 NHibernate 在没有提供 ID 的情况下使用生成的 ID,在提供的情况下使用用户设置的 ID?如果不是,我该如何解决使用 NHibernate 创建 PUT 的问题?

最佳答案

如果你做一个

PUT http://server/user/5

然后服务器创建了对象,但是 nHibernate 更改了 id,然后返回 HTTP 状态代码 301 - Moved permanently 并将新的 URI 放在 Location header 中。

客户端应检测到 301 并使用旧 ID 更新所有存储的 URL。

只是一个警告,PUT 语义并不是真正的创建和更新,它们是替换。因此,如果您发送的表示仅包含姓氏和名字,那么如果您按章行事,那么之前存储的有关该用户的所有其他信息都会丢失。

关于c# - 如何使用 NHibernate 通过 RESTful PUT 创建实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4006282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com