У меня есть требование создать composite
ключ, используя Entity Framework Core
Это мой класс
public partial class MasterType
{
[DataMember(Name = "Id")]
[Key]
public string Id { get; set; }
[Required]
[DataMember(Name = "Name")]
[Key]
public string Name { get; set; }
}
Вот мой класс Configuration
, который помогает мне создавать composite
properties
public class MasterTypeConfigurations : BaseEntityConfigurations<MasterType>
{
public override void Configure(EntityTypeBuilder<MasterType> builder)
{
base.Configure(builder);
// composite key
builder.HasKey(c => new { c.Id, c.Name});
}
}
Я использую migration
возможность ядра инфраструктуры сущностей
Вот сгенерированный сценарий миграции
migrationBuilder.CreateTable(
name: "MasterTypes",
columns: table => new
{
Id = table.Column<string>(nullable: false),
Name = table.Column<string>(nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_MasterTypes", x => new { x.Id, x.Name });
});
Но когда я выполняювставить SQL
, я получаю ошибку
INSERT INTO [dbo].[MasterTypes] ([Id] ,[Name]) VALUES ('CA8301','Type1')
INSERT INTO [dbo].[MasterTypes] ([Id] ,[Name]) VALUES ('CA8301','Type2')
Невозможно вставить дубликат ключа в объект.Дубликат значения ключа (C8301, C8301).
Почему он не объединяет Name
.Потому что Name
это uniqie