如何使用NHibernate更改主键

如何使用NHibernate更改主键,nhibernate,Nhibernate,我想更改数据库中实体的主键,以便更新所有相关的外键约束。/n我们使用NHibenate作为ORM 有可能吗 谢谢 附言 我知道改变主键的做法是非常不鼓励的。我的问题是,我的主键由实体的自然Id支持,有时可能会更改。理论上,我们可以使用一个唯一的主键,与实体的自然键无关,但这在其他地方会使事情变得太复杂,所以这不是一个选项。我不清楚你的问题。。。。nHibernate只是数据库的映射。似乎要执行您建议的操作,您只需将数据库更改为您需要的任何类型,重做映射文件,然后修改所有查询以匹配新模式…不,这是

我想更改数据库中实体的主键,以便更新所有相关的外键约束。/n我们使用NHibenate作为ORM

有可能吗

谢谢

附言


我知道改变主键的做法是非常不鼓励的。我的问题是,我的主键由实体的自然Id支持,有时可能会更改。理论上,我们可以使用一个唯一的主键,与实体的自然键无关,但这在其他地方会使事情变得太复杂,所以这不是一个选项。

我不清楚你的问题。。。。nHibernate只是数据库的映射。似乎要执行您建议的操作,您只需将数据库更改为您需要的任何类型,重做映射文件,然后修改所有查询以匹配新模式…

不,这是不可能的。如果你试图这么做,NHibernate会抱怨的


从“NHibernate”开始,唯一的方法是使用
CreateSQLQuery

我想知道它如何“在其他地方使事情变得太复杂”-我已经使用代理键(偶尔使用自然键)多年了,几乎总是发现它简化了事情。嗯,使用代理密钥需要服务器在数据库中执行额外的查找,或者维护特定对象的本地缓存。这是太多的工作,直到需要改变自然关键已经到来。我想我必须切换到代理密钥,并吸收复杂性。