【问题标题】:Is it possible to get NHibernate to auto-generate an ID if the entity does not have one, or use the ID of the entity if it already has one?如果实体没有 ID,是否可以让 NHibernate 自动生成 ID,或者如果实体已经有 ID,则使用实体的 ID?
【发布时间】:2010-10-14 04:42:44
【问题描述】:

根据 REST 哲学,PUT 操作应该(取自维基百科):

PUT @987654321@

更新集合的地址成员,或者如果它不存在,创建它。

NHibernate 似乎有两种处理实体 ID 的方式:

  1. 自动生成 ID,无论用户设置什么值。
  2. 使用用户分配的 ID,但失去所有自动生成功能。

PUT 操作的问题在于创建实体(如果它不存在)。我的假设是,如果您 PUT 一个不存在的资源,它将使用 URL 指定的 same ID 创建它(例如,如果我们使用上面的示例,则为 142)。但是,NHibernate 不允许您设置自动生成的 ID。

所以我的问题是,如果实体没有 ID(或 ID 类型具有默认值,例如整数为 0),是否有办法让 NHibernate 自动生成 ID,但也可以保存具有用户设置的 ID 的实体?

【问题讨论】:

    标签: c# nhibernate fluent-nhibernate identity uniqueidentifier


    【解决方案1】:

    通常使用分配的 ID 是个坏主意。

    你的情况更接近于NaturalId。我认为你应该使用它。您将需要有两个不同的属性,一个用于数据库主键,第二个作为用户可见的 id。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-17
      相关资源
      最近更新 更多