EF Core实体具有主键但没有聚集索引

3
对于 Entity Framework 来说,当实体拥有主键时,EF 总是会生成一个聚集索引。
public class TestEntity
{
    [key]
    public int NaturalKeyId;

    public string Field2;
    public string Field3;
}
NaturalKeyId字段将会形成一个聚集索引。
有没有一种方法可以将其保留为(唯一的)主键,但不将其作为聚集索引?在我被嘲讽之前,我同意,通常最好在单调递增(替代)Id字段上有一个聚集索引。然而,在特定情况下,所有更新操作总是使用自然键(没有方便的Id传递给更新。 更新总是由只知道自然键的外部系统触发),我想避免(如果可能的话)必须先通过自然键读取实体才能更新/删除它所带来的开销。
我无法将自然主键本身转换为聚集索引,因为关键值基本上是随机的,并且我会面临插入时页面分割的问题。 编辑:我已经有一个工作解决方案,在迁移后,我手动在数据库中重新创建了表,使用NaturalKeyId的唯一索引代替了聚集索引。
1个回答

6

谢谢!它可以工作,但会建立对 SQL Server 提供程序的依赖。 - Sudhashbahu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接