Dapper jest zaśmiecanie single file, który można dołączyć do bazy kodu. Wystarczy edytować plik:
wymiany (wokół linii 300):
typeMap[typeof(Guid)] = DbType.Guid;
typeMap[typeof(DateTime)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
typeMap[typeof(byte[])] = DbType.Binary;
Z:
typeMap[typeof(Guid)] = DbType.Guid;
typeMap[typeof(DateTime)] = DbType.DateTime2;
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
typeMap[typeof(byte[])] = DbType.Binary;
Edit:
Jest też pustych DateTime dalej tego bloku przekształceń, około linii 319:
typeMap[typeof(DateTime?)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
Do:
typeMap[typeof(DateTime?)] = DbType.DateTime2;
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
Co zrobić, jeśli niektóre z nich są DateTime, a inne DateTime2? –
@MetroSmurf Właściwie, trzymanie się DateTime2 jest najlepszym wyborem. DATETIME2 ma niejawną konwersję na DATETIME i odwrotnie w SQL Server. Jedynym problemem będzie utrata dokładności na sygnaturze czasowej, ponieważ .Net DateTime jest dokładniejsza niż SQL Server DATETIME. Jest to znany problem od lat, dlatego zaleca się stosowanie DATETIME2 w pierwszej kolejności. – Randolpho
Próbowałem tego. Jednak nie można wstawić DateTime2 do DateTime w SQL. Otrzymujesz błąd. Lub, aby być dokładniejszym, domyślam się, że jeśli zadeklarujesz parametr polecenia jako DateTime2, SQL nie pozwoli ci wstawić go do DateTime (nie jestem pewien czy blokuje go SQLClient lub sam SQL). – Dirk