Переопределить генераторы ценностей EF CoreC#

Место общения программистов C#
Anonymous
Переопределить генераторы ценностей EF Core

Сообщение Anonymous »

Я хочу переопределить GuidValueGenerator по умолчанию, чтобы он использовал метод Guid.CreateVersion7() вместо Guid.NewGuid().
Я попытался установить собственный генератор значений для каждого свойства Guid, перебирающего метаданные построителя моделей, и это работает.

Код: Выделить всё

public static void SetValueGeneratorOnAdd(this ModelBuilder builder, string columnName, ValueGenerator generator)
{
var clrType = typeof(T);

var properties = builder.Model.GetEntityTypes().SelectMany(
entity => entity.GetProperties().Where(
property => property.Name.Equals(columnName, StringComparison.Ordinal)
&& property.ClrType == clrType));

foreach (var property in properties)
{
property.ValueGenerated = ValueGenerated.OnAdd;
property.SetValueGeneratorFactory((prop, type) => generator);
}
}
Но я думаю, что замена генератора значений по умолчанию — гораздо более эффективный способ.
  • Как я могу заменить/переопределить значение по умолчанию генератор значений в EF Core на этапе настройки модели EF?
  • Может быть, есть какой-то поставщик услуг для создания сервисов EF или что-то в этом роде?


Подробнее здесь: https://stackoverflow.com/questions/790 ... generators

Вернуться в «C#»