Sto usando EF Core 2.0 per creare una tabella in cui la chiave primaria è un GUID
e l'indice cluster è una colonna INT
autoincrementante. Ma sto ricevendo questo errore:
Impossibile creare più di un indice cluster sulla tabella "Tenant". Elimina l'indice cluster "PK_Tenants" esistente prima di crearne un altro
Questo è il codice per creare entità e API Fluent.
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);
}
Suggerire, come rimuovere questo errore e creare la chiave primaria per GUID
e l'indice cluster per la colonna INT
incremento automatico.
Grazie.
L'indice PK non viene mantenuto esplicitamente. In EF Core può essere configurato tramite l'API fluente di KeyBuilder
(notare HasKey
al posto di HasIndex
):
builder.Entity<Tenant>().HasKey(c => c.TenantId).ForSqlServerIsClustered(false);
builder.Entity<Tenant>().HasIndex(c => c.ClusteredId).HasName("ClusteredId").ForSqlServerIsClustered(true);