Let's say we have the next models:
public class Vacancy
{
public required Guid Id { get; set; }
public required VacancyOrigin Origin { get; set; }
}
[ComplexType]
public record VacancyOrigin
{
public required VacancySource Source { get; init; }
public required string ExternalId { get; init; }
}
public enum VacancySource
{
Source1,
Source2,
Source3
}
and the next configurations:
internal sealed class VacancyConfiguration : IEntityTypeConfiguration<Vacancy>
{
public void Configure(EntityTypeBuilder<Vacancy> builder)
{
builder.HasComplexCompositeIndex(
vacancy => new { vacancy.Origin.Source, vacancy.Origin.ExternalId },
isUnique: true);
}
}
This is a result of dotnet ef migrations add ...:
public partial class AddUniqueIndexOnVacancySourceAndExternalId : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateIndex(
name: "IX_Vacancies_Source_ExternalId",
table: "Vacancies",
columns: new[] { "Source", "ExternalId" },
unique: true);
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropIndex(
name: "IX_Vacancies_Source_ExternalId",
table: "Vacancies");
}
}
This migration is wrong because of incorrect column names. The columns parameter should be the next:
columns: new[] { "Origin_Source", "Origin_ExternalId" },
Let's say we have the next models:
and the next configurations:
This is a result of
dotnet ef migrations add ...:This migration is wrong because of incorrect column names. The
columnsparameter should be the next: