C# 如果实体没有ID,是否可以让NHibernate自动生成ID;如果实体已经有ID,是否可以使用该ID?

C# 如果实体没有ID,是否可以让NHibernate自动生成ID;如果实体已经有ID,是否可以使用该ID?,c#,nhibernate,fluent-nhibernate,identity,uniqueidentifier,C#,Nhibernate,Fluent Nhibernate,Identity,Uniqueidentifier,根据REST哲学,一个PUT操作应该(取自维基百科): PUT 更新集合的地址成员,或者如果它不存在,则创建它 NHibernate似乎有两种处理实体ID的方法: 自动生成ID,而不管用户设置了什么值 使用用户分配的ID,但会丢失所有自动生成功能 PUT操作的问题在于如果实体不存在,则创建该实体。我的假设是,如果您放置一个不存在的资源,它将使用URL指定的相同的ID创建它(例如,如果我们使用上述示例,则为142)。但是,NHibernate不允许您设置自动生成的ID 所以我的问题是,如果实体没有

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

PUT

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

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

  • 自动生成ID,而不管用户设置了什么值
  • 使用用户分配的ID,但会丢失所有自动生成功能
  • PUT
    操作的问题在于如果实体不存在,则创建该实体。我的假设是,如果您
    放置
    一个不存在的资源,它将使用URL指定的相同的ID创建它(例如,如果我们使用上述示例,则为142)。但是,NHibernate不允许您设置自动生成的ID


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

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

    你所处的情况更接近所谓的情况。我想你应该用它。您需要有两个不同的属性,一个用于数据库主键,另一个作为用户可见的id