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

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