C# 实体框架-StateModel的响应验证错误
我有一个web api方法,可以在数据库中创建/插入新实体:C# 实体框架-StateModel的响应验证错误,c#,entity-framework,C#,Entity Framework,我有一个web api方法,可以在数据库中创建/插入新实体: [HttpPost] [Route("object/create")] public HttpResponseMessage CreateNewObject([FromBody]MyObject object) { try{ MyService service = new MyService(); service.createObject(object); }catch (DbEntit
[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
?您可以在catch块中提取您需要的所有信息,并以您想要呈现的格式返回它作为响应。确定。这听起来好像没有“标准”或“默认”方法?我希望有类似ModelState的东西,这样我就不需要手动完成所有这些工作:(ModelState是一个MVC概念,所以它在WebAPI中不可用(而且CreateNewObject
看起来像一个WebAPI操作方法)。