【发布时间】:2016-05-05 01:24:33
【问题描述】:
使用 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 有值,会发生以下情况:
- WebAPI 上的 SaveChanges() 已成功调用。
- 我的 Try/Catch 中没有发现任何错误。
- 返回给客户端的“结果”没有与之相关的错误。
但是,在客户端,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
注意:实体已正确保存到数据库、相关实体和所有实体中。所以这不是外键约束或其他数据库问题。
所以似乎服务器上出现了问题,并且没有错误消息到达客户端。但是我的 try/catch 没有得到它,并且只有当可选的外键字段不为空时才会发生错误。
有什么想法吗?
【问题讨论】:
标签: entity-framework asp.net-web-api breeze