Я использую Entity Framework Core 3.1 и пытаюсь выполнить простой запрос свойства перечисления в моей сущности в моей локальной базе данных, и я продолжаю получать эту ошибку:
Ошибка преобразования перечисления при преобразовании значения nvarchar 'Accountant' в тип данных int
Сущность:
public class DemoEntity
{
[Key]
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public Position Position { get; set; }
}
Enum - Позиция:
public enum Position
{
[Display(Name = "Accountant")]
Accountant,
[Display(Name = "Chief Executive Officer (CEO)")]
ChiefExecutiveOfficer,
[Display(Name = "Integration Specialist")]
IntegrationSpecialist,
[Display(Name = "Junior Technical Author")]
JuniorTechnicalAuthor,
[Display(Name = "Pre Sales Support")]
PreSalesSupport,
[Display(Name = "Sales Assistant")]
SalesAssistant,
[Display(Name = "Senior Javascript Developer")]
SeniorJavascriptDeveloper,
[Display(Name = "Software Engineer")]
SoftwareEngineer
}
DbContext:
public class DemoDbContext : DbContext
{
public DemoDbContext(DbContextOptions options)
: base(options) { }
public DbSet<DemoEntity> Demos { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
//var converter = new ValueConverter<Position, string>(
// v => v.ToString(),
// v => (Position)Enum.Parse(typeof(Position), v));
//var converter = new EnumToStringConverter<Position>();
modelBuilder
.Entity<DemoEntity>()
.Property(e => e.Position);
//.HasColumnType("nvarchar(max)")
//.HasConversion<string>();
//.HasConversion(converter);
}
}
Я пробовал повысить ценность конверсий:
.HasConversion<string>()
- не сработало.HasConversion(converter)
- не сработало
Когда я запрашиваю таблицу следующим образом, я получаю ошибку преобразования
try
{
var test = await query.Where(x => x.Position.Equals(Position.Accountant)).ToListAsync();
}
catch (System.Exception e)
{
//throw;
}
Position
имеет тип NVARCHAR(MAX)
в моей базе данных.
Я упускаю что-нибудь простое? Не могу понять, где я ошибаюсь. Пожалуйста помогите.
.HasConversion<string>()
- правильное отображение. Что не сработало? - person Ivan Stoev   schedule 05.04.2020.HasConversion<string>()
. Когда запрос выполняется, я получаю ту же ошибку. - person fingers10   schedule 05.04.2020query.Where(x => x.Position.Equals(Position.Accountant.ToString())).ToListAsync()
. Теперь запрос выполняется, но я не получаю результатов. Любая идея? - person fingers10   schedule 05.04.2020