将聚集索引与主键分开的实体框架

本文关键字:实体 框架 聚集 索引 | 更新日期: 2023-09-27 18:33:55

我有一个表模式,其中主键是uniqueidentifier,聚集索引是类型为 bigint 的标识列。

这个想法是 Guid 索引可能会碎片化,如果它要碎片化,我宁愿它不是聚集索引,因为那样它真的会减慢插入速度。即我希望尽可能按顺序插入该行。

但是,我不希望聚集索引传播到 EF 中的概念层。聚集索引只是所谓的记录的物理位置,程序员不需要知道任何关于它的信息。就他们而言,他们只处理Guid PK。所以我从模型中删除了该属性。

然而,项目编译抱怨聚集索引列不可为空,并且没有默认值,考虑到它是一个标识列并且既不能有默认值也不能为空,这两者都是荒谬的。

我该怎么做才能编译项目?

注意:我不想就 Guid vs. Sequential Guid vs. Int Id 进行辩论。这个系统必须能够横向扩展,这意味着我担心的是 Guid PK。

将聚集索引与主键分开的实体框架

应检查属性的EntityKey值是否在 EDMX 中设置为 true