Ef core enum to table table table introndC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Ef core enum to table table table intrond

Сообщение Anonymous »

У меня есть модель со свойством enum. Это свойство имеет пользовательский перечисление для преобразователя строки, определенного в конфигурации Code-Pryst EF Core. У меня также есть класс таблицы поиска для этого перечисления, который также имеет конфигурацию кода EF Code, а также сгенерированные засеянные данные для вариантов enums. Класс: < /p>

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

class Model
{
public Status Status { get; private set; }
}
< /code>
my enum: < /p>
enum Status
{
[Code("Active")]
Active = 1,

[Code("Pending")]
Pending = 2,

[Code("InProgress")]
InProgress = 3,

[Code("Complete")]
Complete = 4
}
< /code>
my поиск: < /p>
class StatusLookup
{
public required int Id { get; init; }
public required string Code { get; init; }
}
< /code>
Таблица поиска EF Конфигурация основной конфигурации: < /p>
public void Configure(EntityTypeBuilder builder)
{
builder
.ToTable($"Lookup_Status");

builder
.HasKey(t => t.Id);

builder
.Property(t => t.Code)
.HasMaxLength(64)
.IsRequired();

// Seed the lookup table
builder
.HasData(
BuildLookupLists() // Uses reflection to build lookup list data
);
}
< /code>
Конфигурация модели: < /p>
protected override void ConfigureEntity(EntityTypeBuilder builder)
{
builder
.Property(t => t.Status)
.HasConversion(
s => s.GetCode(),
c => EnumFromCode(c))
.IsRequired();

// I know this doesn't work, but should signify what I am trying to do
builder
.HasOne()
.WithMany()

// Ideally EF Core would know this is mapping to a string column in the database due
// to the previous definition saying that it has a string conversion, but this does not work.
.HasForeignKey(t => t.Status)
.HasPrincipalKey(t => t.Code)
.OnDelete(DeleteBehavior.Restrict);
}
Проблема с моим решением заключается в том, что EF Core говорит, что он не может сопоставить между типом состояния enum и кодом типа строки.
- это то, что я пытаюсь сделать возможным? Ограничение на перечисление означает, что они знают все действительные значения и не могут ввести неверное значение перечисления.

Подробнее здесь: https://stackoverflow.com/questions/794 ... constraint
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Укладка элементов div по вертикали при использовании display:table, table-row, table-cell
    Anonymous » » в форуме CSS
    0 Ответы
    126 Просмотры
    Последнее сообщение Anonymous
  • Как я могу заставить typing.overload работать с enum.Enum?
    Anonymous » » в форуме Python
    0 Ответы
    45 Просмотры
    Последнее сообщение Anonymous
  • Кастинг-класс> до Class>
    Anonymous » » в форуме JAVA
    0 Ответы
    48 Просмотры
    Последнее сообщение Anonymous
  • Кастинг-класс> до Class>
    Anonymous » » в форуме JAVA
    0 Ответы
    65 Просмотры
    Последнее сообщение Anonymous
  • В чем разница между Enum ToString и nameof Enum в C#?
    Anonymous » » в форуме C#
    0 Ответы
    38 Просмотры
    Последнее сообщение Anonymous

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