gpt4 book ai didi

c# - SQLite + Dapper:将值转换为枚举

转载 作者:行者123 更新时间:2023-12-03 09:37:46 28 4
gpt4 key购买 nike

我有一个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; }
}


休息是一样的。

关于c# - SQLite + Dapper:将值转换为枚举,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264169/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com