Идентификатор основной сущности EF как пользовательский класс со столбцом идентификаторов - PullRequest
0 голосов
/ 22 апреля 2020

Я хотел бы использовать строго типизированные идентификаторы в моей модели сущностей, сопоставленные с с автоинкрементом 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.

У вас есть идеи, как решить эту проблему?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...