簡體   English   中英

SQLite + Dapper:將值轉換為枚舉

[英]SQLite+Dapper: Convert values to enum

我有一個SQLite數據庫,其中的event表由四列組成: id (INT), timestamp (TEXT), level (TEXT)和message (TEXT)。 當我讀回事件時,我想將level值轉換為相應的LogLevel枚舉值。 文本值與枚舉成員名稱相同。 我怎樣才能做到這一點? 我看到如果使用Query<object>我會得到一個列表,在其中可以枚舉所有行並將其強制轉換,然后再將它們添加到新的Event結構值中。 但這是最好/最簡單的方法嗎?

public struct Event
{
    public Event(DateTime timestamp, LogLevel level, string message)
    {
        Timestamp = timestamp;
        Level = level;
        Message = message;
    }
    public DateTime Timestamp { get; }
    public LogLevel Level { get; }
    public string Message { get; }
}

public enum LogLevel
{
    FATAL,
    ERROR,
    WARN,
    INFO
}

public List<Event> GetNewEvents(uint rowId)
{
    var events = _dbConnection.Query<Event>("SELECT * FROM events WHERE id >= @RowId;", new { RowId = rowId });
    return events.ToList();
}

如果您的“級別”列值與枚舉值匹配,則Dapper將自動映射枚舉值。 但是,您可能對該構造函數有疑問。 也不確定為什么要使用struct。 只需將您的事件更改為以下類的結構即可。

public class Event
{           
    public DateTime Timestamp { get; set; }
    public LogLevel Level { get; set; }
    public string Message { get; set; }
}

休息是一樣的。

暫無
暫無

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

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