未修改实体的实体框架验证错误

时间:2017-06-04 03:33:19

标签: c# asp.net-mvc entity-framework automapper

这是我的控制器动作:

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。

1 个答案:

答案 0 :(得分:1)

如果您希望EF跳过它们,您可以将相关实体明确标记为未更改/已分离:

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