Obter DateTime como UTC com Dapper

Estou usando o Dapper para mapear minhas entidades para o SQL Server CE. Se eu salvar umDateTime comKind=Utc, quando eu li de volta eu recebo umDateTime comKind=Unspecified, o que leva a todos os tipos de problemas.

Exemplo:

var f = new Foo { Id = 42, ModificationDate = DateTime.UtcNow };
Console.WriteLine("{0} ({1})", f.ModificationDate, f.ModificationDate.Kind);
connection.Execute("insert into Foo(Id, ModificationDate) values(@Id, @ModificationDate)", f);
var f2 = connection.Query<Foo>("select * from Foo where Id = @Id", f).Single();
Console.WriteLine("{0} ({1})", f2.ModificationDate, f2.ModificationDate.Kind);

Este código fornece a seguinte saída:

20/09/2012 10:04:16 (Utc)
20/09/2012 10:04:16 (Unspecified)

Eu sei que deveria estar usando umDateTimeOffset, mas, infelizmente, o SQL CE não tem suporte para esse tipo.

Existe uma solução alternativa? Posso dizer ao Dapper para assumir que todas as datasDateTimeKind.Utc? E, mais geralmente, quais são minhas opções para personalizar o mapeamento?

EDIT: Minha solução atual é para corrigir as datas após Dapper materializou o resultado, mas isso cheira meio ...

var results = _connection.Query<Foo>(sql, param).Select(PatchDate);

...

static Foo PatchDate(Foo f)
{
    if (f.ModificationDate.Kind == DateTimeKind.Unspecified)
        f.ModificationDate = DateTime.SpecifyKind(f.ModificationDate, DateTimeKind.Utc);
    return f;
}

questionAnswers(4)

yourAnswerToTheQuestion