2017-12-19 11 views
1

Ich versuche, einen Datensatz aus meiner Datenbank mit Entity Framework
zu aktualisieren Das Problem ist, wenn ich versuche, den Datensatz zu aktualisieren, bekomme ich die DbEntity Validierungsfehler weil Ich habe [EmailAddress] Validierung auf meinem Modell, gibt es trotzdem diese Validierung zu überschreiben, wenn ich etwas aktualisieren möchte?Wie überschreibt man eine Modellvalidierung beim Aktualisieren eines Datensatzes in der Datenbank mit Entity Framework

Modell:

public partial class T 
{ 
    public int Id { get; set; } 

    [Required] 
    public string name { get; set; } 
    public string lastname { get; set; } 

    [Required] 
    [EmailAddress] 
    public string email { get; set; } 
} 

und das ist das Update:

[HttpPost] 
    public ActionResult UpdateR(int id, FormCollection collection) 
    { 
     try 
     { 
      var user = new T() { Id = id, email = "Deactivated"}; 
      using (var db = new Database1Entities()) 
      { 
       db.T.Attach(user); 
       db.Entry(user).Property(x => x.email).IsModified = true; 
       db.SaveChanges(); 

       return RedirectToAction("Index"); 
      } 


     } 
     catch (Exception e) 
     { 
      ViewBag.message = e.ToString(); 
      return View(); 
     } 
    } 

und die Aussicht:

<table id="mytable" class="table table-bordered table-striped"> 
    <thead> 
    <tr> 
     <th>@Html.DisplayNameFor(item => item.name)</th> 
     <th>@Html.DisplayNameFor(item => item.lastname)</th> 
     <th>@Html.DisplayNameFor(item => item.email)</th> 
    </tr> 
    </thead> 
    <tbody> 
    @foreach (var item in Model) 
    { 
     <tr> 
      <td>@Html.DisplayFor(mitem => item.name)</td> 
      <td>@Html.DisplayFor(mitem => item.lastname)</td> 
      <td>@Html.DisplayFor(mitem => item.email)</td> 
      <td>@Html.ActionLink("Update", "UpdateR", new { id = item.Id}) 
</td> 
     </tr> 
    } 
    </tbody> 
</table> 

Edit:

db.Configuration.ValidateOnSaveEnabled = false; 

Kurz vor db.SaveChanges(); arbeitete für mich, wenn jemand die gleiche Frage hatte.

Ref

+0

'email =" Deaktiviert "' macht keinen Sinn (es ist keine E-Mail-Adresse). Was versuchst du anzugeben, indem du das einstellst? –

+0

Sie aktualisieren die E-Mail zu ungültigen E-Mail-Adresse, können Sie nicht überschreiben – Jaffal

+0

ihre eigentliche E-Mail = E-Mail + "| Deaktiviert", und es für Admin, um die deaktivierten Benutzer in Benutzern zu sehen pannel –

Antwort

1

änderte ich den DbContextConfiguration.ValidateOnSaveEnabled Property auf false gesetzt.

[HttpPost] 
public ActionResult UpdateR(int id, FormCollection collection) 
{ 
    try 
    { 
     var user = new T() { Id = id, email = "Deactivated"}; 
     using (var db = new Database1Entities()) 
     { 
      db.Configuration.ValidateOnSaveEnabled = false; 
      db.T.Attach(user); 
      db.Entry(user).Property(x => x.email).IsModified = true; 
      db.SaveChanges(); 

      return RedirectToAction("Index"); 
     } 


    } 
    catch (Exception e) 
    { 
     ViewBag.message = e.ToString(); 
     return View(); 
    } 
} 
+0

Sie sollten erklären, warum die Lösung funktioniert. Einfach Code einfügen ist nicht nützlich, wenn der OP (und zukünftige Leser) Ihren Code durchsuchen müssen, um es herauszufinden (und manchmal verstehen sie es nicht, wenn sie nur Code betrachten). –

+0

@ErikPhilips Ich habe die Referenz oben hinzugefügt, ist das genug? –

+0

Ich habe ein bisschen mehr hinzugefügt –

Verwandte Themen