【问题标题】:updating an object's ID which is not an identity using Nhibernate使用 Nhibernate 更新不是身份的对象 ID
【发布时间】:2011-11-26 21:42:10
【问题描述】:

我有一个已经存在于数据库中的对象,我想修改它的 ID, Nhibernate 将其视为一个新对象并将其保存而不是更新。 我有很多愚蠢的解决方案,但我想要一个有效的解决方案。

【问题讨论】:

  • 如果您从逻辑上考虑,“ID”就是您的对象的身份。不同的 ID = 不同的对象。所以很自然,当你改变一个对象的 ID 时,它就不再是同一个对象了。通常,更改对象的 id 不是一个好习惯。你能解释一下你的场景和你的需求吗?
  • 场景很简单,我只想自己更新id

标签: c# nhibernate orm primary-key


【解决方案1】:

这有点难以回答,因为很不清楚你想做什么......这个问题的背景是什么?为什么还要换身份证?也许它类似于客户 ID?

好吧,我想说最好的解决方案是将业务逻辑与技术逻辑分开。通常建议使用无意义的主键。当然有反对的理由,但是如果您已经知道您的 ID 可能会更改,我会说添加一个不会更改的 ID。

无论如何,如果你不能添加一个不会改变的无意义的ID,只需先删除旧ID的实体,然后添加新ID的新实体。

【讨论】:

  • 是的,当然有很多解决方案。但我正在寻找一种棘手且最佳的方法来避免仅仅因为 nhiberante 中的问题而更改数据库设计
【解决方案2】:

据我所知,唯一的方法是删除和插入行,但我会使用native SQL query

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2016-04-28
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-14
    • 2017-08-26
    相关资源
    最近更新 更多