[решено] Как я могу получить пол в виде строки типа «пол»: «мужчина» в моем jsonResult, я использую EntityFramework Core 2.2 с проектом Asp.net core 2.2. У меня возникли проблемы с enum, но в этом примере enum возвращает строку вместо int
(https://docs.microsoft.com/en-us/ef/ef6/modeling/code-first/data-types/enums)
Моя модель Сотрудник
public class Employee
{
public int Id { get; set; }
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
public DateTime Birthdate { get; set; }
public Genders Gender { get; set; }
}
Конфигурация моего сотрудника
public void Configure(EntityTypeBuilder<Employee> builder)
{
builder.ToTable("Employee", "HR");
builder.Property(e => e.Id)
.ValueGeneratedOnAdd();
builder.Property(e => e.FirstName)
.IsRequired()
.HasMaxLength(50);
builder.Property(e => e.MiddleName)
.IsRequired()
.HasMaxLength(50);
builder.Property(e => e.LastName)
.IsRequired()
.HasMaxLength(50);
builder.Property(e => e.Birthdate)
.HasColumnType("Date");
builder.Property(e => e.Gender)
.HasConversion(
g => g.ToString(),
g => (Genders)Enum.Parse(typeof(Genders), g));
}
My enum Пол
public enum Genders
{
Unknown,
Male,
Female
}
Мой репозиторий
public class Repository<TEntity> : IRepository<TEntity> where TEntity : class
{
protected readonly DbContext Context;
private readonly DbSet<TEntity> _entities;
public Repository(DbContext context)
{
Context = context;
_entities = Context.Set<TEntity>();
}
public async Task<IEnumerable<TEntity>> ToListAsync()
{
return await _entities.ToListAsync();
}
}
Мой API-контроллер
[HttpGet]
[ProducesResponseType(StatusCodes.Status200OK)]
public async Task<IEnumerable<Employee>> Get()
{
return await _employees.ToListAsync();
}
Мой результат
[
{
"id": 2,
"firstName": "First Name 1",
"middleName": "Middle Name 1",
"lastName": "Last Name 1",
"birthdate": "1991-10-04T00:00:00",
"gender": 1 // I Want this result "gender": "Male"
}
]
Решение: я добавляю это в свой startup.cs
.AddJsonOptions(options =>
{
options.SerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
});