2017-06-04 73 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

谢谢,这工作。 –