İçeriğe geç

Dapper – SqlTypeException: SqlDateTime overflow. Must be between

Bu uyarıyı dapper üzerinde alıyor iseniz öncelikle modellemeleriniz kontrol etmenizde fayda var. Özellikle başlıkta Dapper ifadesini kullandım ki, diğer ORM’lerde durumlar biraz daha farklılık gösterebiliyor.

Katmanlı bir mimari kullanıyorsanız ve referans aldığınız aşağıdaki gibi bir baseentity class’ınız var ise aynı özelliği iki sınıf içerisinde de kullanmış olabilme ihtimaliniz mevcut. Özellikle sonradan baseentity sınıfı üzerinde yapılan değişikliklerde Visual Studio hemen hata bildirmeyebiliyor. Bu gibi durumlarda mutlaka kontrol yapılmalı ve varsa mükerrer özelikler kaldırılmalıdır.

Hatalı örnek;

public class Users : BaseEntity
{
    public string Username { get; set; }
    public string Password { get; set; }
    public DateTime CreatedDate { get; set; }
}

public partial class BaseEntity
{
    public int Id { get; set; }
    public DateTime CreatedDate { get; set; }
}

İşte bu gibi bir düzenleme yapmış iseniz yukarıda görüldüğü gibi “CreatedDate” iki sınıf için de tanımlanmış durumda. Miras alınan sınıfta da bu property tanımlı olduğu için sınıfı doldurup dapper ile CRUD işlemlerden birini yapmaya kalkar iken “SqlTypeException: SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.” şeklinde bir hata ile karşılaşmanız içten bile değil. Özellikle de bu tanım “nullable” özelliğe sahip değil ise.

Ekstra karşılaştığım farklı noktalarda aynı hatalar olur ise de güncellemeye devam ediyor olacağım.

4 1 vote
Article Rating
Tarih:Hatalar ve Çözümler
Subscribe
Bildir
guest
0 Yorum
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x