From ffa0a1a02c47cf0b9d22c2e203bd7cd6e7351b0f Mon Sep 17 00:00:00 2001 From: Kyle Spearrin Date: Mon, 21 May 2018 17:12:57 -0400 Subject: [PATCH] always specify DateTimeKind.Utc for dapper --- .../Repositories/SqlServer/BaseRepository.cs | 6 ++++++ .../Repositories/SqlServer/DateTimeHandler.cs | 16 ++++++++++++++++ 2 files changed, 22 insertions(+) create mode 100644 src/Core/Repositories/SqlServer/DateTimeHandler.cs diff --git a/src/Core/Repositories/SqlServer/BaseRepository.cs b/src/Core/Repositories/SqlServer/BaseRepository.cs index fd25e41812..e02885c442 100644 --- a/src/Core/Repositories/SqlServer/BaseRepository.cs +++ b/src/Core/Repositories/SqlServer/BaseRepository.cs @@ -1,9 +1,15 @@ using System; +using Dapper; namespace Bit.Core.Repositories.SqlServer { public abstract class BaseRepository { + static BaseRepository() + { + SqlMapper.AddTypeHandler(new DateTimeHandler()); + } + public BaseRepository(string connectionString) { if(string.IsNullOrWhiteSpace(connectionString)) diff --git a/src/Core/Repositories/SqlServer/DateTimeHandler.cs b/src/Core/Repositories/SqlServer/DateTimeHandler.cs new file mode 100644 index 0000000000..36eabca61a --- /dev/null +++ b/src/Core/Repositories/SqlServer/DateTimeHandler.cs @@ -0,0 +1,16 @@ +using System; +using System.Data; +using Dapper; + +public class DateTimeHandler : SqlMapper.TypeHandler +{ + public override void SetValue(IDbDataParameter parameter, DateTime value) + { + parameter.Value = value; + } + + public override DateTime Parse(object value) + { + return DateTime.SpecifyKind((DateTime)value, DateTimeKind.Utc); + } +}