如何使用<id>
以外的列保存或更新NHibernate?我在表中实现了一个标识键列,但这不是使行唯一的原因。我知道“composite-id”存在,但我听说只应该在遗留数据库上使用,因为遗留数据库没有太大的自由来改变它。有没有其他方法可以在不使用人工密钥的情况下实现唯一密钥?我应该根据使行唯一的列的哈希来创建自己的密钥吗?如果我这样做,NHibernate在尝试使用手动分配的密钥插入对象时是否会抱怨?
答案 0 :(得分:4)
NHibernate有lots of options for primary keys。您可以使用任何可用的内置生成器或应用程序分配的PK(“已分配”生成器选项)。
如果这些选项都不适合您,您可以始终实现自己的IIdentifierGenerator
,但在执行此操作之前,请认为非常难:内置生成器和PK处理封装来自许多专家的RDBMS经验。
答案 1 :(得分:1)
db行的唯一性与识别要更新的行完全不同。
为什么不使用唯一约束来确保您的记录是唯一的,并遵循使用ID的标准做法。