Mr.*_*Boy 7 c# sql-server datetime dapper
当我从涉及字段的 C# 查询 SqlServer 数据库时DateTime,返回的System.DateTime结果Kind==Unspecified并不奇怪,因为 SqlServerDateTime类型不保留时区信息。
我想知道是否有一种方法可以自动将这些值读取为本地或通用值,而不是在读取查询结果后手动转换它们,这会在丢失字段时引入更多错误的可能性。
典型的代码如下所示:
using (var conn = ...)
using (var command = ...)
{
conn.Open();
var reader = command.ExecuteReader();
while (reader.Read())
{
DateTime dateField = (DateTime)reader["date"];
//dateField.Kind == Unspecified
}
}
Run Code Online (Sandbox Code Playgroud)
DateTime dateField = DateTime.SpecifyKind((DateTime)reader["date"], DateTimeKind.Utc);
Run Code Online (Sandbox Code Playgroud)
由于它没有持久保存在数据库中,因此您必须在自己的代码中检索时指定它,尽管您可以创建扩展方法,但 DataReader 中没有快捷方法。
public static class Helper{
public static DateTime GetDateTimeAsUtc(this IDataReader reader, string column){
return DateTime.SpecifyKind((DateTime)reader[column], DateTimeKind.Utc);
}
}
Run Code Online (Sandbox Code Playgroud)
然后调用它
DateTime dateField = reader.GetDateTimeAsUtc("date");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1305 次 |
| 最近记录: |