2010-05-01 37 views
0

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

是否可以做到这一点?

谢谢。

P.S.

我知道改变主键的做法非常令人沮丧。我的问题是我的主键由实体的自然标识支持,有时可能会改变。理论上,我们可以利用一个独特的主键,与实体的自然关键无关,但这在其他地方太复杂了,所以这不是一种选择。

+0

我想知道它是如何“在其他地方使事情复杂化太多” - 我一直在使用替代键(偶尔是自然键)*年*,并且几乎总是发现它*简化了*事物。 – Aaronaught 2010-05-01 22:52:06

+0

那么,使用代理键将需要服务器在数据库中执行额外的查找或维护某些对象的本地缓存。直到需要改变自然键已经到来,这是太多的工作。我想我将不得不切换到代理键,只是吸收复杂性。 – mark 2010-05-02 06:13:06

回答

1

我不清楚你的问题.... nHibernate只是你的数据库的映射。看起来你要做的是建议你只需要将数据库更改为任何你需要的数据,重做你的映射文件,然后修改任何查询以匹配新的模式......

0

不,它不可能。 NHibernate会抱怨,如果你尝试这样做。

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