1

我们目前在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                |

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

非常感谢

安德鲁

4

1 回答 1

0

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

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

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

INSERT INTO SeedMyTable DEFAULT VALUES; SELECT CAST(SCOPE_IDENTITY() AS BIGINT)
于 2018-03-13T10:33:50.587 回答