从Fluent NHibernate中的种子表生成标识

时间:2010-03-04 11:32:13

标签: c# nhibernate fluent-nhibernate identity

我需要从种子表中的列生成一个标识,并递增该列中的值。

e.g

Seed Table:

name     "analysisid"
id       1


Analysis Table:

id
name
description

在分析映射上,我需要确保从种子表中获取id,并在插入分析时更新seedid的analyzeid。我是否实现了继承自TableGenerator的自定义类?

1 个答案:

答案 0 :(得分:4)

NHibernate包含多个identity generation strategies,并通过NHibernate.Id.IIdentifierGenerator包含自定义扩展机制。

您可以通过实现一个insert trigger来获取并为实体Analysis分配下一个标识符。在这种情况下,请使用<generator class="trigger-identity" />

另一种方法是通过实施IIdentifierGenerator并映射为<generator class="My.Namespace.MyIdentifierGenerator" />来构建自己的标识符策略。

在流利的情况下,这些生成器通过以下方式进行映射:

Id( x => x.Id ).GeneratedBy.Custom<NHibernate.Id.TriggerIdentityGenerator>();
Id( x => x.Id ).GeneratedBy.Custom<My.Namespace.MyIdentifierGenerator>();