SQL 服务器 TPH(Table 每个层次结构)根据类型自动递增多个列

SQL Server TPH (Table Per Hierarchy) auto increment multiple columns base on type

我们目前在 Entity Framework 中使用 TPT(Table 每个类型),这非常慢,因为我们有大约 20 tables,当它们被查询时,Entity Framework 创建一些非常缓慢的大规模伪装 SQL。

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

我们如何才能根据类型自动增加列,如下面的结果?

例如

当前工作任务

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

当前工作任务

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

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

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

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

非常感谢

安德鲁

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

这不是一个非常好的方法,因为我们需要大约 20 个种子 tables.Each table 在 sql server

中只有一个定义为 BIGINT 的身份 ID

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

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