Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
2.3k views
in Technique[技术] by (71.8m points)

Dapper typehandler when returning dynamics

This does not work:

public class DateTimeHandler : SqlMapper.TypeHandler<DateTime>
{
    public override DateTime Parse(object value) =>
        DateTime.SpecifyKind((DateTime)value, DateTimeKind.Utc);

    public override void SetValue(IDbDataParameter parameter, DateTime value)
    {
        parameter.Value = value;
    }
}

Dapper.SqlMapper.AddTypeHandler<DateTime>(new DateTimeHandler());

var res = connection.QuerySingleOrDefault<dynamic>($@"SELECT some_date FROM table");
// outputs Unspecified
System.Console.WriteLine(res.some_date.Kind.ToString());

This works:

public class ViewModel {
    public DateTime some_date { get; set; }
}
var res = connection.QuerySingleOrDefault<ViewModel>($@"SELECT some_date FROM table");
// outputs Utc
System.Console.WriteLine(res.some_date.Kind.ToString());

Any way to make typehandlers in dapper work when querying as dynamic?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)
等待大神答复

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...