【问题标题】:Mapping a single row table without primary key using Nhibernate使用 Nhibernate 映射没有主键的单行表
【发布时间】:2011-05-07 05:55:36
【问题描述】:

我正在使用我无法更改的旧表。数据库有一个设置表,它由很多列(每个设置一个)和一行组成:

Columns: Setting1  | Setting2     | Setting3  | etc...
         ----------+--------------+-----------+-------------
Row1:    SomeValue | AnotherValue | LastValue | etc...

现在,如果不是因为表缺少主键,这一切都很好。显然,最初的开发者认为没有必要,因为只有一行。

有没有办法用 Nhibernate 映射这个?我已经实现了一个基于 SQL 的解决方案,但我很想拥有 Nhibernate 带来的灵活性和简单性。

我担心最坏的情况,但是,有什么想法吗?

【问题讨论】:

  • 为什么不能换表?它是宪法的一部分还是什么?只需添加任何类型、任何值的虚拟 Id 列。
  • 该代码是与 ERP 系统集成的一部分,而后者又从其他角度进行了一些其他集成。我不想摆弄表结构,以防其他集成或 ERP 更新过程出现问题。集成将出售给我们公司以外的客户,因此我无法准确判断生产环境中的环境。

标签: c# nhibernate nhibernate-mapping


【解决方案1】:

好吧,只需选择任何设置(列)作为 ID。唯一的不便是,如果您需要更改 PK 的设置,您必须删除并重新插入该行...

【讨论】:

    【解决方案2】:

    您可以映射一个添加虚拟 PK 列的视图:

    select 1 as SettingsId, Setting1, etc....
    

    或从存储过程中加载对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-03-26
      • 2017-06-28
      • 1970-01-01
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多