340 Stimmen

Validierung für eine oder mehrere Entitäten beim Speichern von Änderungen in der SQL Server-Datenbank mit Entity Framework fehlgeschlagen

Ich möchte meine bearbeiten, um Datenbank zu speichern und ich bin mit Entity FrameWork Code-First in ASP.NET MVC 3 / C#, aber ich bin immer Fehler. In meiner Ereignisklasse habe ich die Datentypen DateTime und TimeSpan, aber in meiner Datenbank habe ich Datum bzw. Uhrzeit. Könnte dies der Grund sein? Wie kann ich vor dem Speichern von Änderungen in der Datenbank den entsprechenden Datentyp im Code verwenden?

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; }
}

Methode in der Steuerung >>>> Problem bei storeDB.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);
    }
}

mit

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 Datenbank / T-SQL

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

Http-Formular

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  

Serverfehler in der Anwendung '/'.

Validierung für eine oder mehrere Entitäten fehlgeschlagen. Siehe Eigenschaft 'EntityValidationErrors' für weitere Details.

Beschreibung: Während der Ausführung der aktuellen Webanfrage ist eine unbehandelte Ausnahme aufgetreten. Bitte überprüfen Sie den Stack-Trace für weitere Informationen über den Fehler und wo er im Code entstanden ist.

Details zur Ausnahme: System.Data.Entity.Validation.DbEntityValidationException: Validierung für eine oder mehrere Entitäten fehlgeschlagen. Siehe Eigenschaft 'EntityValidationErrors' für weitere Details.

Fehlerquelle:

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

Quelldatei: C:\sep\MvcEventCalendar\MvcEventCalendar\Controllers\EventManagerController.cs Zeile: 77

Stack Trace:

[DbEntityValidationException: Validierung für eine oder mehrere Entitäten fehlgeschlagen. Siehe Eigenschaft 'EntityValidationErrors' für weitere Details].

1voto

Jhabar Punkte 109

Ich habe vor ein paar Tagen beim Aktualisieren der Datenbank dasselbe Problem gehabt. In meinem Fall wurden einige neue, nicht löschbare Spalten zur Wartung hinzugefügt, die nicht im Code enthalten waren, was die Ausnahme verursacht. Ich habe diese Felder herausgefunden und Werte für sie eingegeben, und das Problem ist gelöst.

1voto

Saket Singh Punkte 11

In meinem Fall habe ich eine Tabelle Spalte Name Path, die Datentyp, den ich eingestellt war varchar (200). nach der Aktualisierung auf nvarchar (max), ich habe die Tabelle aus edmx gelöscht und dann wieder die Tabelle hinzugefügt und es wokred richtig für mich.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X