2017-06-04 6 views
0

Hier ist mein Controller-Aktion:Entity Framework Validierung Fehler auf Entity nicht geändert wird

public JsonResult Add(Mod.Payment payment) 
{ 
    if (ModelState.IsValid) 
    { 
     Ent.Payment paymentEnt = new Ent.Payment(); 
     Mapper.Map(payment, paymentEnt); 
     db.Payments.Add(paymentEnt); 
     db.SaveChanges(); 
     return Payment(paymentEnt.PaymentId); 
    } else 
    { 
     Response.StatusCode = (int)HttpStatusCode.BadRequest; 
     return Json(new { Message = "Not OK" }); 
    } 

} 

db.SaveChanges löst EntityValidationErrors. Die Fehler gelten nicht für die Entität "paymentEnt", sondern für verknüpfte Entitäten, die in den Zahlungssichtmodellen und Entitäten über die Navigationseigenschaften enthalten sind.

Ich modifiziere diese Entitäten nicht, nur "ZahlungEnt". Wie kann ich Entity Framework dazu bringen, nicht zu versuchen, sie zu validieren oder ihre Fehler zu ignorieren?

Ich könnte ein anderes Payment ViewModel erstellen, das verwandte Entitäten ausschließt, aber das würde DRY verletzen.

+0

@ ashin Antwort gearbeitet, so dass ich überlege mir diese geschlossen. Ich hätte mehr von meinem Code hinzugefügt, aber es gibt eine Menge davon und ich wollte so knapp wie möglich sein. Aber danke für das Engagement. –

Antwort

1

Sie könnten die damit verbundenen Einheiten als Unverändert/Freistehendes explizit kennzeichnen, wenn Sie EF sie überspringen wollen:

db.Entry(paymentEnt.RelatedEntity).State = System.Data.Entity.EntityState.Unchanged; 
+0

Danke, das hat funktioniert. –