Я хотел бы использовать строго типизированные идентификаторы в моей модели сущностей, сопоставленные с с автоинкрементом int в БД (например, MS SQL Столбец идентификации). Но EF Core 3.1 не поддерживает идентификацию для пользовательского типа:
public class Vendor
{
public VendorId Id { get; private set; }
public string CompanyName { get; set; }
}
public class VendorId
{
public int Value { get; }
public VendorId(int value)
{
Value = value;
}
}
public void Configure(EntityTypeBuilder<Vendor> vendorEntity)
{
vendorEntity.HasKey(vendor => vendor.Id);
vendorEntity.Property(vendor => vendor.Id)
.HasConversion(vendorId => vendorId.Value, dbValue => new VendorId(dbValue))
.UseIdentityColumn();
}
В этой модели я получаю исключение:
Генерация значения идентификатора не может использоваться для свойства 'Id 'на типе сущности' Vendor ', потому что типом свойства является' VendorId '. Генерация значения идентичности может использоваться только с целочисленными свойствами со знаком.
Я также пытался сопоставить частное целое поле поддержки int id
, но тогда я не могу использовать свойство Id в запросах EF. Так что это не выглядит решением.
Подобные проблемы возникают, когда я пытаюсь сгенерировать ключ HiLo.
У вас есть идеи, как решить эту проблему?