【发布时间】:2018-05-16 05:02:45
【问题描述】:
我正在使用 EF Core 2.0 创建一个表,其中主键是 GUID,聚集索引是自动递增的 INT 列。但我收到了这个错误:
无法在表“租户”上创建多个聚集索引。在创建另一个聚集索引之前删除现有聚集索引“PK_Tenants”
这是创建实体和 Fluent API 的代码。
Tenant.cs
public class Tenant : EntityBase
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int ClusteredId { get; set; }
public new Guid TenantId { get; set; }
public string TenantCode { get; set; }
}
FluentAPI
protected override void OnModelCreating(ModelBuilder builder)
{
builder.Entity<Tenant>().HasIndex(c => c.TenantId).ForSqlServerIsClustered(false);
builder.Entity<Tenant>().HasIndex(c => c.ClusteredId).HasName("ClusteredId").ForSqlServerIsClustered(true);
base.OnModelCreating(builder);
}
请建议,如何消除此错误并为GUID 创建主键和自动递增INT 列的聚集索引。
谢谢。
【问题讨论】:
-
modelBuilder.Entity<Tenant>().HasAlternateKey(t => t.TenantId); //Auto increment modelBuilder.Entity<Tenant>().HasKey(t => t.ClusteredId);会为你工作
标签: entity-framework .net-core entity-framework-core