簡體   English   中英

如何在 .net 內核上使用 ef 內核映射 postgresql 中的枚舉(db first)

[英]How to mapping enum in postgresql (db first) with ef core on .net core

我正在編寫一個記錄我得到的異常的中間件。

我在 postgresql 上創建了枚舉值

在此處輸入圖像描述

並將其映射到我的日志表

在此處輸入圖像描述

我的日志 model 是:

   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:
 

字符串錯誤

Posthresql 枚舉值區分大小寫。 因此,當我刪除枚舉並再次修復它們(它們都是小寫字母)時,錯誤得到了解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM