使用WebAPI和EntityFramework进行Breeze设置。
EntityManager查询工作正常。 SaveChanges()在所有实体上都正常工作,除了......
我有一个带有可选相关实体的实体:
Public Class Payment
Public Property Id As Integer
Public Overridable Property Registree As Registree
Public Property RegistreeId as Integer?
Public Property Amount as Double
End Class
这是我对SaveChanges()
的WebAPI操作 <HttpPost()>
Public Function SaveChanges(bundle As JObject) As SaveResult
Dim result As SaveResult
Try
result = breezeDb.SaveChanges(bundle)
Catch ex As Exception
Dim err = ex
End Try
Return result
End Function
当我在Breeze中创建一个新的付款实体并调用SaveChanges时,一切正常,除非我的付款实体具有RegistreeId
的值。
如果RegistreeId
有值,则会发生以下情况:
但是,在客户端,manager.saveChanges()失败,给出一个没有详细信息的错误对象,只是“响应的HTTP状态代码为500。”
return manager.saveChanges()
.then(function(saveResult){
return saveResult;
})
.catch(errorOnSave); //this gets called, no breakpoints get hit in the "then" function
注意:实体IS正确保存到数据库,相关实体和所有。所以这不是外键约束或其他数据库问题。
所以似乎服务器上出现了问题,并且没有错误消息传递给客户端。但是我的try / catch没有得到它,只有当可选的外键字段为非null时才会出现错误。
有什么想法吗?
答案 0 :(得分:1)
发现问题...没有意识到我没有关闭web.config中的自定义错误。
<system.web>
<customErrors mode="Off" />
...
</system.web>
然后我能够看到Json.Net在解析saveresult时遇到了null异常错误。