我有一个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
可以响应?
答案 0 :(得分:0)
您可以在catch块中提取所需的所有信息,并以您想要呈现的格式作为响应返回。