Kategori arşivi: C#

Validation failed for one or more entities. See ‘EntityValidationErrors’ property for more details hatası

“Validation failed for one or more entities. See ‘EntityValidationErrors’ property for more details” hatası aldığınız zaman aklınıza ilk gelen şey veritabanınızda null olmayan bir alana null bir değer vermiş olabilirsiniz veya  20 karakterlik bir string alanımız vardır buna 20 karakterden fazla bir kelime girmişsek bu hata ile karşılaşacağız.

Bu hatayı aldığımız zaman bize hangi alan ile ilgili durum olduğunu söylemeyecektir. Bu kısmını try-catch bloğunda catch(Exception ex) yerine catch(DbEntityValidationException ex) yazarak ulaşabiliriz.

catch (DbEntityValidationException ex)
{
    foreach (var errs in ex.EntityValidationErrors)
    {
        foreach (var err in errs.ValidationErrors)
        {
            var propName = err.PropertyName;
            var errMess = err.ErrorMessage;
        }
    }
}

err.PropertyName alanında hatanın hangi alandan dolayı oluştuğunu size söyleyecektir.

Row not found or changed hatası

Linq to Sql kullanarak bir veritabanına SubmitChanges(); metodu ile kayıt yaptığınız zaman “Row not found or changed” yani “Satır bulunamadı veya değiştirildi” hatasıyla karşılaşabilirsiniz. Bu hatayla özellikle static bir class içerisinde bir tabloda değişiklik yaptınız ve bir sonraki tabloda önce değiştirdiğiniz tablodan bir alanın Id si veya her hangi bir alanı eklemek istediğinizde bu hatayı alabilirsiniz.

Bu hatayı aşağıdaki kod parçacığı ile çözebilirsiniz.

try
{
    dbContext.SubmitChanges(ConflictMode.ContinueOnConflict);
}
catch(ChangeConflictException)
{
    foreach(ObjectChangeConflict object dbContext.ChangeConflict)
    {
        object.Resolve(RefreshMode.OverwriteCurrentValues);
    }
}