EF Core автоматически устанавливает длину столбца при сохранении строк перечисления.C#

Место общения программистов C#
Anonymous
EF Core автоматически устанавливает длину столбца при сохранении строк перечисления.

Сообщение Anonymous »

У меня есть сущность с двумя перечислениями, и я установил преобразование для этих двух полей, чтобы сохранить строку в базе данных. Но когда я генерирую миграцию, EF Core создает один столбец с nvharchar(max), а другой с nvarchar(450).

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

public enum FirstType
{
Indexing,
Reading,
}

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

public enum SecondType
{
ProposalAutomationContent,
NoticeResumeInteraction,
}

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

var processTypeConverter = new EnumToStringConverter();
var aiActionTypeConverter = new EnumToStringConverter();

modelBuilder
.Entity()
.Property(e => e.ProcessType)
.HasConversion(processTypeConverter);

modelBuilder
.Entity()
.Property(e => e.ActionType)
.HasConversion(aiActionTypeConverter);

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

ActionType = table.Column(type: "nvarchar(max)", nullable: false),
ProcessId = table.Column(type: "bigint", nullable: false),
ProcessType = table.Column(type: "nvarchar(450)", nullable: false)
Я попробовал добавить большой параметр перечисления в одно из перечислений, но теперь EF Core генерирует оба столбца с помощью nvarchar(450).
Как EF Core определяет длину столбца? И почему у него такое поведение?

Подробнее здесь: https://stackoverflow.com/questions/787 ... um-strings

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