【问题标题】:SQL Server TPH (Table Per Hierarchy) auto increment multiple columns base on typeSQL Server TPH(按层次结构表)根据类型自动增加多列
【发布时间】:2018-03-09 12:17:18
【问题描述】:

我们目前在Entity Framework中使用TPT(Table Per Type),这很慢,因为我们有大约20个表,当查询它们时,Entity Framework会创建一些非常慢的伪装SQL。

每个表都有一个自增整数列,这允许每个类型都有一个按类型递增的数字。这是客户想要的。现在我们想要迁移到性能更高的 TPH,我们需要将所有这些表列移到一个表中。

我们怎样才能根据下面的结果中的类型来自动增加列?

例如

当前工作任务

| TaskId    | TaskNumber    |
-----------------------------
| 1234      | 1             |
| 2345      | 2             |

当前工作任务

| TaskId    | TaskNumber    |
-----------------------------
| 3244      | 1             |
| 3245      | 2             |

这是我们想要的 TPH 表结构,如您所见,我们希望任务编号根据任务类型递增。

| TaskId    | Type      | JobTaskNumber    | WorkTaskNumber   |
---------------------------------------------------------------
| 1234      | Job       | 1                | null             |
| 2345      | Job       | 2                | null             |
| 3244      | Work      | null             | 1                |
| 3245      | Work      | null             | 2                |

我想知道我们是否使用种子表,但非常感谢任何解决方案

非常感谢

安德鲁

【问题讨论】:

  • 您可以从数据库序列中提取数字。

标签: sql-server entity-framework auto-increment tph


【解决方案1】:

好吧,我认为可行的方法也是如此。

这不是一个非常好的方法,因为我们需要大约 20 个种子表。每个表只有一个身份 id,在 sql server 中定义为 BIGINT

当我们想要添加并获取一个新的递增 id 时,我们只需使用 dapper 调用它来获取结果。

INSERT INTO SeedMyTable DEFAULT VALUES; SELECT CAST(SCOPE_IDENTITY() AS BIGINT)

【讨论】:

    猜你喜欢
    • 2023-03-29
    • 2021-05-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    相关资源
    最近更新 更多