使用<id> </id>以外的列来保存或更新NHibernate

时间:2010-08-12 21:25:23

标签: nhibernate hibernate

如何使用<id>以外的列保存或更新NHibernate?我在表中实现了一个标识键列,但这不是使行唯一的原因。我知道“composite-id”存在,但我听说只应该在遗留数据库上使用,因为遗留数据库没有太大的自由来改变它。有没有其他方法可以在不使用人工密钥的情况下实现唯一密钥?我应该根据使行唯一的列的哈希来创建自己的密钥吗?如果我这样做,NHibernate在尝试使用手动分配的密钥插入对象时是否会抱怨?

2 个答案:

答案 0 :(得分:4)

NHibernate有lots of options for primary keys。您可以使用任何可用的内置生成器或应用程序分配的PK(“已分配”生成器选项)。

如果这些选项都不适合您,您可以始终实现自己的IIdentifierGenerator,但在执行此操作之前,请认为非常难:内置生成器和PK处理封装来自许多专家的RDBMS经验。

复合PK为generally not worth the complexity they add

答案 1 :(得分:1)

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

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