2017-06-04 92 views
0

這裏是我的控制器操作:實體框架驗證錯誤實體上不被修改

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觸發EntityValidationErrors。這些錯誤不是針對「paymentEnt」實體,而是針對通過導航屬性包含在付款「視圖模型」和「實體」中的相關實體。

我沒有修改這些實體,只有「paymentEnt」。那麼,如何讓Entity Framework不嘗試驗證它們或忽略它們的錯誤?

我可以創建另一個支付ViewModel,排除相關的實體,但這將違反DRY。

+0

@阿信的答覆工作,所以我在考慮這個封閉。我會包含更多的代碼,但其中有很多,我希望儘可能簡潔。但感謝參與。 –

回答

1

你可以明確地標記相關的實體不變/獨立,如果你想EF跳過他們:

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

謝謝,這工作。 –