npgsql에 대한 새로운 Nodatime 플러그인을 시험해보고 결과를 ZonedDateTime에 매핑하는 데 문제가 있습니다.Dapper 사용 NodaTime Npgsql 플러그인의 ZonedDateTime 매핑
원시 npgsql을 사용하면 timestamptz 값을 검색하고 Instant 또는 ZonedDateTime에 매핑 할 수 있습니다.
오류 분석 열 0 (dappertime = 나는 예외를 얻을
public class DapperTest { public ZonedDateTime DapperTime { get; set;} } NpgsqlConnection.GlobalTypeMapper.UseNodatime(); using (var connection = new NpgsqlConnection("connection_string")) { connection.Open(); var d = connection.Query<DapperTest>("set time zone 'Europe/Vienna'; select now() as dappertime;").First(); Console.WriteLine(d); }
이 코드 : 이제
NpgsqlConnection.GlobalTypeMapper.UseNodatime(); using (var connection = new NpgsqlConnection("connection_string")) { connection.Open(); var command = new NpgsqlCommand("set time zone 'Europe/Vienna'; select now();", connection); var reader = command.ExecuteReader(); while (reader.Read()) { Console.WriteLine(reader.GetValue(0)); // by default the npgsql Nodatime plugin maps timestamptz to Instant Console.WriteLine(reader.GetFieldValue<ZonedDateTime>(0)); // mapping to ZonedDateTime } }
나는 말끔와 함께 작동하도록 ZonedDateTime 매핑을 얻으려고 2017-10-30T12 : 08 : 43Z - 개체)
하지만 "DapperTime "속성 즉시 작동합니다.
Dapper가 npgsql Nodatime 플러그인에서 제공하는 ZonedDateTime 매핑을 사용하도록 강제 할 수 있습니까?
이미 이러한 프로젝트를 시작하게되어 매우 기쁩니다. 다른 유형의 경우처럼 ZonedDateTimeHandler를 구현하려고했지만 멀리 가지 않았습니다. 당신은 그것을 볼 수 있습니다. (https://gist.github.com/mibiio/1b4af21987695312d973d97c0b79701b) npgsql이 SqlMapper로부터 typing을 영향을 줄 수있는 방법을 찾지 못했습니다. 여전히 Instant를 반환합니다. 내가 생각할 수있는 또 다른 방법은 Instant -> ZonedDateTime 변환을 SqlMapper에서 수행하는 것이지만 기본 NpgsqlConnection에 대한 액세스 권한이 필요하다 (connection.Timezone). – mibiio
네, 어젯밤에 몇 시간을 보냈습니다. 포스트그레스를 준비하기 전에 많은 작업이 필요합니다. 현재 SQL Server에만 한정되어 있습니다. 이 분야에서 더 많은 일을 할 것입니다. 내가 일하기 전에 다른 사람이 이것에 대해 좋은 생각을 가지고있는 경우에 대비하여 여기에 질문을 열어두고 대답하지 마십시오. :) –