Задать вопрос
@netcore

Почему In Memory Database не автогенерирует int свойство?

In Memory Database не автогенерирует int свойство, чяднт?
Пытаюсь простое интовое значение засеквенсить

builder.Property(x => x.SerialNumber).ValueGeneratedOnAdd()

после AddAsync() — 0

.net Core 3.1
  • Вопрос задан
  • 88 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@netcore Автор вопроса
Решил по-другому в OnModelBuilding

if (DataBase.IsInMemory())
var autoGenIntProperties = modelBuilder.Model.GetEntityTypes()
                .SelectMany(t => t.GetProperties())
                .Where(p => p.ClrType == typeof(int) && p.ValueGenerated != ValueGenerated.Never);

            foreach (var property in autoGenIntProperties)
                property.SetValueGeneratorFactory((p, t) => new InMemoryIntegerValueGenerator<int>(p.GetIndex()));


Это скорее всего потому что:
1. Ключи понятно как инкрементить, а кастомные поля нет
2. У каждой бд реализация этого кейса разная, по этому нужно явно указывать в InMemory как отыгрывать этот кейс

Странно что в апишке не предусмотрели этот кейс обязательного использования инкрементации при инициализации, что бы юзеры не ломали голову часами
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Попробуйте вот это решение.
https://stackoverflow.com/questions/47754939/how-t...

Кроме этого похоже что проблема повторяется, почитайте советы вот в этой ветке.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы