让NHibernate使用非<;id>;

让NHibernate使用非<;id>;,nhibernate,hibernate,Nhibernate,Hibernate,如何让NHibernate使用以外的列进行保存或更新?我在表中实现了一个标识键列,但这并不是使行唯一的原因。我知道“复合id”是存在的,但我听说它应该只用于遗留数据库,在这些数据库中没有太多的自由来更改它。有没有其他方法可以在不使用人工密钥的情况下实现唯一密钥?我应该根据使行唯一的列的散列来创建自己的键吗?如果我这样做了,当NHibernate尝试插入一个带有手动指定键的对象时,它不会抱怨吗?NHibernate有。您可以使用任何可用的内置生成器,或应用程序指定的主键(“指定”生成器选项) 如果

如何让NHibernate使用
以外的列进行保存或更新?我在表中实现了一个标识键列,但这并不是使行唯一的原因。我知道“复合id”是存在的,但我听说它应该只用于遗留数据库,在这些数据库中没有太多的自由来更改它。有没有其他方法可以在不使用人工密钥的情况下实现唯一密钥?我应该根据使行唯一的列的散列来创建自己的键吗?如果我这样做了,当NHibernate尝试插入一个带有手动指定键的对象时,它不会抱怨吗?

NHibernate有。您可以使用任何可用的内置生成器,或应用程序指定的主键(“指定”生成器选项)

如果这些选项都不适合您,您可以始终实现自己的
IIdentifierGenerator
,但在这样做之前要仔细考虑:内置的生成器和PK处理封装了许多专家多年的RDBMS经验

复合蛋白激酶是。

NHibernate具有。您可以使用任何可用的内置生成器,或应用程序指定的主键(“指定”生成器选项)

如果这些选项都不适合您,您可以始终实现自己的
IIdentifierGenerator
,但在这样做之前要仔细考虑:内置的生成器和PK处理封装了许多专家多年的RDBMS经验


复合pk是。db行的唯一性与标识要更新的行完全不同


为什么不使用唯一性约束来确保您的记录是唯一的,并遵循使用ID的标准实践。

db行的唯一性与标识要更新的行完全不同


为什么不使用唯一约束来确保您的记录是唯一的,并遵循使用ID的标准实践。

如何使用指定的密钥保存对象?我不断收到错误“具有相同标识符值的不同对象已与会话关联”@SideFX:这是一个完全不同的问题,与此问题几乎没有关系,您已经问过了:谢谢。感谢您的帮助。标签也允许我这样做。如何使用指定的密钥保存对象?我不断收到错误“具有相同标识符值的不同对象已与会话关联”@SideFX:这是一个完全不同的问题,与此问题几乎没有关系,您已经问过了:谢谢。谢谢你的帮助。标签也允许我这样做。