实体框架-StateModel的响应验证错误

时间:2018-08-02 08:33:13

标签: c# entity-framework

我有一个Web api方法,可以将新实体创建/插入到数据库中:

[HttpPost]
[Route("object/create")]
public HttpResponseMessage CreateNewObject([FromBody]MyObject object)
{
    try{
        MyService service = new MyService();
        service.createObject(object);
    }catch (DbEntityValidationException ex){
        return this.Request.CreateErrorResponse(HttpStatusCode.BadRequest, "Validation Erros occured");
    }
}

service.createObject(object)读取外键,仔细检查外键是否有效,并加载/添加外来实体以使对象实体完整。之后,它将调用context.saveChanges()。如果发生验证错误,将抛出DbEntityValidationException

public Object createObject(Object object){
    object.foreignObject = context.foreignObjects.where(e => e.id == object.foreignObject.id).First();
    context.Objects.Add(object);
    context.saveChanges();
}

到目前为止,一切都很好。进行此设置后,问题是我只响应了前端无法处理的“发生的验证错误”。

所以我的问题是,是否有任何方法可以将DbEntityValidationException解析为ModelState可以响应?

1 个答案:

答案 0 :(得分:0)

您可以在catch块中提取所需的所有信息,并以您想要呈现的格式作为响应返回。