我们目前在Entity Framework中使用TPT(Table Per Type),这非常慢,因为我们有大约20个表,当它们被查询时,Entity Framework会创建一些非常慢的大量伪装SQL。
每个表都有一个自动增量整数列,这允许每个类型都有一个每个类型递增的数字。这是客户想要的。现在我们想要转向性能更高的TPH,我们需要将所有这些表列移到一个表中。
我们如何根据下面的结果中的类型设置自动增量列?
e.g。
当前工作任务
| 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 |
我想知道我们是否使用播种表,但任何解决方案都非常赞赏
非常感谢
安德鲁
答案 0 :(得分:0)
好的,我认为可行。
不是一个非常好的方法,因为我们需要大约20个种子表。每个表只有一个在sql server中定义为BIGINT的身份ID
当我们想要添加并获得新增加的id时,我们只需使用dapper调用它来获得结果。
INSERT INTO SeedMyTable DEFAULT VALUES; SELECT CAST(SCOPE_IDENTITY() AS BIGINT)