nhibernate - 流畅的 nhibernate 自动递增非键 (Id) 属性

标签 nhibernate fluent-nhibernate

是否有可能有一个由数据库管理的类自动增量的整数属性,但不是主键(或 NHibernate 引用的 Id )?我无法找到如何执行此操作的示例。任何帮助,将不胜感激。谢谢。

最佳答案

两种选择。

  • 如果数据库 100% 对此负责,您只需要告诉 NHibernate 该属性已生成,并且不要将其包含在任何更新/isnerts 中。缺点是 NH 需要做一个额外的选择来保持内存中的值新鲜。

    < property name="Foo"generated="always"update="false"insert="false"/>
  • 如果数据库不负责并且您只想自动完成此操作,您可以使用拦截器在插入时将值设置为 1,并在更新时将其增加 1。

  • http://www.nhforge.org/doc/nh/en/index.html#objectstate-interceptors (11.1 - 拦截器)

    您将覆盖 OnSave() 以查找属性并设置初始值,然后覆盖 OnFlushDirty() 以查找属性属性并递增。

    编辑:

    我是白痴,没注意到你说的是Fluent NHibernate。

    编辑#2:

    我想您可能也有兴趣将此专栏用作版本控制?
    < version name="Foo" generated="always" />
    

    关于nhibernate - 流畅的 nhibernate 自动递增非键 (Id) 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1155503/

    相关文章:

    asp.net-mvc - 使用 ASP.NET、NHibernate/Fluent NHibernate 实现最轻松的 Multi-Tenancy

    c# - 映射父亲枚举时生成子对象(Fluent Nhibernate)

    sql-server - 使用 NHibernate(和 Fluent NH)以优于秒的精度(并且不截断毫秒)映射日期时间类型版本列

    nhibernate - SQLite 与 NHibernate 结合是否支持参照完整性/外键?

    c# - (流利的)NHibernate table-per-hierarchy; Id 仅与鉴别器一起唯一

    NHibernate:在模式导出中强制使用方括号?

    c# - 如果实体没有 ID,是否可以让 NHibernate 自动生成 ID,或者如果实体已经有 ID,是否可以使用实体的 ID?

    nhibernate - 流利的NHibernate映射-状态模式

    c# - NHibernate 中的对象标识问题是什么?

    c# - 将 Linq 设置为 NHibernate ADO 命令超时