Dapper, kod tabanınıza eklediğiniz bir single file'dir.
(hat 300 civarında) değiştirin:
typeMap[typeof(Guid)] = DbType.Guid;
typeMap[typeof(DateTime)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
typeMap[typeof(byte[])] = DbType.Binary;
olarak: Sadece dosyayı düzenlemek
typeMap[typeof(Guid)] = DbType.Guid;
typeMap[typeof(DateTime)] = DbType.DateTime2;
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
typeMap[typeof(byte[])] = DbType.Binary;
Düzenleme:
eşleştirmeleri o bloğun altındaki da bir null DateTime var, satır 319:
typeMap[typeof(DateTime?)] = DbType.DateTime;
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
To
: BuINSERT
's öncesine uygulanmalıdır
SqlMapper.AddTypeMap(typeof(DateTime), System.Data.DbType.DateTime2);
:
typeMap[typeof(DateTime?)] = DbType.DateTime2;
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
Bazıları DateTime ve diğerleri DateTime2 ise? –
@MetroSmurf Aslında, DateTime2 ile yapmanın en iyi seçenek olduğunu düşünüyorum. DATETIME2, SQL Server'da DATETIME ve tam tersi örtük bir dönüşüme sahiptir. Tek sorun, zaman damgası üzerinde hassasiyet kaybı olacaktır, çünkü .Net DateTime, SQL Server DATETIME'den daha hassastır. Bu yıllarca bilinen bir konu olmuştur, ancak DATETIME2'yi ilk etapta kullanmanızın nedeni budur. – Randolpho
Bunu denedim. Ancak, bir DateTime2'yi SQL'de bir DateTime'a ekleyemezsiniz. Bir hata olsun. Veya daha doğru olması için, komut parametresini DateTime2 olarak bildirirseniz, SQL'in bunu DateTime'a eklemenize izin vermeyeceğini tahmin ediyorum (SQLClient'in engellenip engellemediğinden emin değilim ya da SQL'in kendisi ise). – Dirk