SORU
19 NİSAN 2012, PERŞEMBE


EF Code First: Nasıl 'EntityValidationErrors bakın' nuget paket özelliği konsol?

Bunun için ne diyeceğimi bilmiyorum:

Bir varlık için derslerim (4.1.3) çerçeve kod ilk yaklaşım tanımlanmış ettim. Her şey yolunda (vb tabloları yaratmak oldu.) Tohum için başlayana kadar.

Ben ne zaman şimdi

Add-Migration "remigrate" ; Update-Database;

Paket üzerinde bir hata konsolu "Doğrulama, bir veya daha fazla varlıkları için başarısız oluyorum. 'EntityValidationErrors daha fazla özellik.

Ben bir kesme benim Tohum() yöntem değil, çünkü ben çalışan bu konsol ne zaman proje değil çalışan, ben clueless olarak nasıl gidileceğini detayları (PS - gördüm parçacığı Validation failed for one or more entities while saving changes to SQL Server Database gösterir nasıl görebiliyorum özelliği.)

Benim Tohum olduğunu biliyorum() yöntemi eğer doğru yöntem çağrısı sonra geri koydum, hata kaybolduktan çünkü bir sorunu var. Nasıl doğrulama hatası ne göreyim benim kesme noktası ayarlamak mı? Biraz kaybetti. Ya da başka bir şekilde nuget konsol bunu izlemek için mi?

CEVAP
20 Mayıs 2012, Pazar


Bu son zamanlarda çok beni rahatsız etti. Tohum yöntemi Yapılandırma sınıfı kapsayıcı bir işlevi yerine koyarak tamir ettim, ve benim işlevi yerine çağrı ile SaveChanges çağrıları yerini aldı. Bu fonksiyonu sadece EntityValidationErrors koleksiyon içinde hataları numaralandırma ve özel Durum iletisi bireysel sorunları listeler bir istisna yeniden oluşturma. Bu NuGet Paket Yöneticisi olarak çıkış Haritayı konsol yapar.

Kod aşağıdaki gibidir:

/// <summary>
/// Wrapper for SaveChanges adding the Validation Messages to the generated exception
/// </summary>
/// <param name="context">The context.</param>
private void SaveChanges(DbContext context) {
    try {
        context.SaveChanges();
    } catch (DbEntityValidationException ex) {
        StringBuilder sb = new StringBuilder();

        foreach (var failure in ex.EntityValidationErrors) {
            sb.AppendFormat("{0} failed validation\n", failure.Entry.Entity.GetType());
            foreach (var error in failure.ValidationErrors) {
                sb.AppendFormat("- {0} : {1}", error.PropertyName, error.ErrorMessage);
                sb.AppendLine();
            }
        }

        throw new DbEntityValidationException(
            "Entity Validation Failed - errors follow:\n"   
            sb.ToString(), ex
        ); // Add the original exception as the innerException
    }
}

Sadece tohum yöntemi SaveChanges(context) context.SaveChanges() çağrıları değiştirin.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Brendan van Son

    Brendan van

    5 Aralık 2006
  • Codecourse

    Codecourse

    3 ŞUBAT 2009
  • NPR

    NPR

    22 NİSAN 2006