SORU
23 Mart 2011, ÇARŞAMBA


Doğrulama Sunucu Veritabanı Varlık Çerçevesi kullanarak SQL değişiklikleri kaydetme sırasında bir veya daha fazla varlıkları için başarısız oldu

Benim Veritabanına kayıt etmek istiyorum ve 3 / C ASP.NET MVC Kod-İlk Varlık Çerçevesi kullanıyorum fakat hata alıyorum. Olay sınıfta, tarih ve zaman aralığı veri var ama benim veritabanında, sırasıyla Tarih ve saat var. Bu neden olabilir? Nasıl veritabanı değişiklikleri kaydetmeden önce bu kodu uygun veri türü için döküm.

public class Event
{
    public int EventId { get; set; }
    public int CategoryId { get; set; }
    public int PlaceId { get; set; }
    public string Title { get; set; }
    public decimal Price { get; set; }
    public DateTime EventDate { get; set; }
    public TimeSpan StartTime { get; set; }
    public TimeSpan EndTime { get; set; }
    public string Description { get; set; }
    public string EventPlaceUrl { get; set; }
    public Category Category { get; set; }
    public Place Place { get; set; }
}

Kontrol yöntemi ^<<< . StoreDB de sorun.() SaveChanges;

// POST: /EventManager/Edit/386        
[HttpPost]
public ActionResult Edit(int id, FormCollection collection)
{
    var theEvent = storeDB.Events.Find(id);

    if (TryUpdateModel(theEvent))
    {
        storeDB.SaveChanges();
        return RedirectToAction("Index");
    }
    else
    {
        ViewBag.Categories = storeDB.Categories.OrderBy(g => g.Name).ToList();
        ViewBag.Places = storeDB.Places.OrderBy(a => a.Name).ToList();
        return View(theEvent);
    }
}

ile

public class EventCalendarEntities : DbContext
{
    public DbSet<Event> Events { get; set; }
    public DbSet<Category> Categories { get; set; }
    public DbSet<Place> Places { get; set; } 
}

SQL Server 2008 R2 Veritabanı / T-SQL

EventDate (Datatype = date)  
StartTime (Datatype = time)  
EndTime (Datatype = time)  

Http Form

EventDate (Datatype = DateTime) e.g. 4/8/2011 12:00:00 AM  
StartTime (Datatype = Timespan/time not sure) e.g. 08:30:00  
EndTime (Datatype = Timespan/time not sure) e.g. 09:00:00  

'/' Uygulamasında sunucu Hatası

Doğrulama, bir veya daha fazla varlıkları için başarısız oldu. Daha fazla özellik. EntityValidationErrors bakın

Açıklama: işlenmeyen Bir özel durum geçerli web isteği yürütülürken oluştu. Bu hata hakkında daha fazla bilgi için yığın izlemesini gözden geçirin ve kod içinde kaynaklandığı yer.

Özel Durum Ayrıntıları: System.Veri.Varlık.Doğrulama.DbEntityValidationException: Doğrulama, bir veya daha fazla varlıkları için başarısız oldu. Daha fazla özellik. EntityValidationErrors bakın

Kaynak Hatası:

Line 75:             if (TryUpdateModel(theEvent))
Line 76:             {
Line 77:                 storeDB.SaveChanges();
Line 78:                 return RedirectToAction("Index");
Line 79:             }

Kaynak Dosya: Satır C:\sep\mvceventcalendar\mvceventcalendar\controllers\eventmanagercontroller.cs : 77

Yığın İzleme:

[DbEntityValidationException: Doğrulama, bir veya daha fazla varlıkları için başarısız oldu. 'EntityValidationErrors' özelliği için daha fazla bilgi için bakınız

CEVAP
6 HAZİRAN 2011, PAZARTESİ


Aşağıdaki kodu DbEntityValidationException (ad eklemek gerekir: System.Data.Entity.Validation using listesine System.Diagnostics) tüm bilgileri ayıklayın:

catch (DbEntityValidationException dbEx)
{
    foreach (var validationErrors in dbEx.EntityValidationErrors)
    {
        foreach (var validationError in validationErrors.ValidationErrors)
        {
            Trace.TraceInformation("Property: {0} Error: {1}", 
                                    validationError.PropertyName, 
                                    validationError.ErrorMessage);
        }
    }
}

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Easy Learn Tutorial

    Easy Learn T

    10 Kasım 2012
  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • Malwarebytes

    Malwarebytes

    22 Temmuz 2007