Clustered index not created for alternate key when property is named "Id"
- Dominant language
- C#
- Stars
- 14.8k
- Forks
- 3.4k
- PR merge metrics
- PR metrics pending
Description
## Issue
When specifying a clustered index for an alternate key and the property is named "Id", the clustered index is not added to the model or subsequent migrations. I attached a full repro project, but here are some relevant snippets:
```csharp
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Entity(builder =>
{
builder.Property(e => e.Id)
.HasValueGenerator()
.ValueGeneratedOnAdd();
builder.HasAlternateKey(e => e.Id)
.IsClustered();
builder.HasKey(e => e.PrimaryKey)
.IsClustered(false);
});
}
```
```csharp
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "MyEntity",
columns: table => new
{
PrimaryKey = table.Column(type: "uniqueidentifier", nullable: false),
Id = table.Column(type: "uniqueidentifier", nullable: false),
Data = table.Column(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_MyEntity", x => x.PrimaryKey)
.Annotation("SqlServer:Clustered", false);
});
}
```
```csharp
modelBuilder.Entity("ClusteredAlternateKeyRepro.MyEntity", b =>
{
b.Property("PrimaryKey")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.Property("Data")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property("Id")
.ValueGeneratedOnAdd()
.HasColumnType("uniqueidentifier");
b.HasKey("PrimaryKey");
SqlServerKeyBuilderExtensions.IsClustered(b.HasKey("PrimaryKey"), false);
b.ToTable("MyEntity");
});
```
## Workaround
To work around this, I renamed the property in code and mapped to the "Id" column to avoid renaming the existing column.
EF Core version:
Database provider: Microsoft.EntityFrameworkCore.SqlServer
Target framework: .NET 6, 7
Operating system: Windows
IDE: Rider
[ClusteredAlternateKeyRepro.zip](https://github.com/dotnet/efcore/files/10493330/ClusteredAlternateKeyRepro.zip)
Contributor guide
Assessment
This issue has not been assessed yet.