根据REST哲学,PUT
操作应该(取自维基百科):
PUT http://example.com/resources/142
更新该集合的地址成员,如果该成员不存在,则创建。
NHibernate似乎有两种处理实体ID的方法:
PUT
操作的问题是创建实体的部分,如果它不存在的话。我的假设是,如果您PUT
资源不存在,它将使用URL指定的相同 ID创建它(如果我们使用上面的示例,则为142) 。但是,如果自动生成,NHibernate不允许您设置ID。
所以我的问题是,有没有办法让NHibernate自动生成一个ID,如果实体没有一个(或者具有ID类型的默认值,例如0表示整数),还可以保存具有用户设置ID的实体?
答案 0 :(得分:1)
通常使用指定的ID是个坏主意。
你所拥有的情况更接近于NaturalId。我认为你应该使用它。您需要具有两个不同的属性,一个用于数据库主键,另一个用作用户可见的ID。