2016-04-18 15 views
0
arbeiten

Ich habe ein Mitglied Modell:asp.net Mvc 6 erwarten SaveChangesAsync() nicht

public class Member 
{ 
    public int ID { get; set; } 

    [Display(Name = "First Name")] 
    public string FirstName { get; set; } 

    [Display(Name = "Last Name")] 
    public string LastName { get; set; } 

    [Display(Name = "Password")] 
    public string Pass { get; set; } 
} 

mit dieser DbContext Klasse:

public class App1Context: DbContext 
    { 

     public DbSet<Member> Members { get; set; } 
    } 

nach Migrationen und Datenbank machen verwende ich einen Controller (Register meine neues Mitglied Daten in der Datenbank) zu speichern:

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public async Task<ActionResult> Register([Bind("ID", "FirstName", "LastName", "Pass")] Member member) 
    { 
     try 
     { 
      if (ModelState.IsValid) 
      { 
       App1context.Members.Add(member); 
       await App1context.SaveChangesAsync(); 
       return RedirectToAction("showMember"); 
      } 
     } 
     catch (DbUpdateException) 
     { 
      ModelState.AddModelError(string.Empty, "Unable to save changes."); 
     } 
     return View(member); 
    } 

, wenn das System ausgeführt werden soll [await App1context.SaveChangesAsync();], c Annot speichern und catch (DbUpdateException) stattdessen ausführen.

warum kann nicht speichern ??

+1

Warum haben Sie keinen Nachrichtenfehler hinzugefügt? – Max

Antwort

0

Wenn nichts anderes definiert wurde, wird Ihre ID auf Mitglied als Primärschlüssel Ihrer Tabelle zugewiesen; Entity Framework weist es auch als automatisches Inkrement (Identität) zu.

Wenn Sie versuchen, Ihre eigene ID in Ihre Objekte mit aktivierter Identität einzufügen und sie in der Datenbank zu speichern; Sie erhalten eine INSERT-Ausnahme.

Wenn dies der Fall ist, entfernen Sie die ID aus Ihrem BIND [] Parameter, und EF wird es selbst tun.

Verwandte Themen