[英]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.