2

我正在编写一个记录我得到的异常的中间件。

我在postgresql上创建了枚举值

在此处输入图像描述

并将其映射到我的日志表

在此处输入图像描述

我的日志模型是:

   public class Log
{
    [Key]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    [JsonIgnore]
    public int Id { get; set; }
    public EventType EventType { get; set; }
    public string Description { get; set; }
    public DateTime CreatedAt { get; set; }

}

我的错误中间件是:

        var log = new Log();
        log.Description = ex.Message;
        log.EventType = EventType.Exception;
        log.CreatedAt = DateTime.Now;

        Context.Add(log);
        Context.SaveChanges();

(这即将出现在界面上,但我想尽快展示)

我的背景:

 protected override void OnModelCreating(ModelBuilder model)
    {
        model
            .HasPostgresEnum(null, "event_type", new[] { "info", "unknown", "warning", "exception" });


  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder
            .UseNpgsql(Configuration.GetConnectionString("MyConnection"))
            .UseCamelCaseNamingConvention();
        NpgsqlConnection.GlobalTypeMapper.MapEnum<EventType>("enum_logs_eventType");
    }

我认为我做的一切都是正确的。它是 DB First,所以我迁移了数据库,但我认为您在那里执行了相同的步骤。

当我运行服务并触发任何错误时,我收到此错误:

在此处输入图像描述

When I try to cast to string or run .HasConversion or something i get this error:
 

字符串错误

4

1 回答 1

1

Posthresql 枚举值区分大小写。因此,当我删除枚举并再次修复它们(它们都是小写字母)时,错误得到了解决。

于 2021-02-12T08:16:02.970 回答