我正在使用breeze.js webapi公开下面的课程。我理解不支持DbGeography类型,因此我使用JsonIgnore将其从输出中删除,但是如何从元数据中忽略/省略它?
Public Class Household
<Key>
Public Property Id As Integer
Public Property Postcode As String
Public Property Saving As Decimal
<JsonIgnore>
Public Property Coordinates As DbGeography
Public ReadOnly Property Latitude As Double
Get
Return Coordinates.Latitude.Value
End Get
End Property
Public ReadOnly Property Longitude As Double
Get
Return Coordinates.Longitude.Value
End Get
End Property
End Class
<BreezeController>
Public Class HouseholdsController
Inherits ApiController
Private ReadOnly _contextProviders As EFContextProvider(Of EnergyFriendContext) = New EFContextProvider(Of EnergyFriendContext)
' ~/api/Households/Metadata
<HttpGet>
Public Function Metadata() As String
Return _contextProviders.Metadata()
End Function
' ~/api/Households/Households
' ~/api/Households/Households?$filter=IsArchived eq false&$orderby=CreatedAt
<HttpGet>
Public Function Households() As IQueryable(Of Household)
Return _contextProviders.Context.Households
End Function
End Class
breeze js错误:
Unable to recognize DataType for: Edm.Geography
答案 0 :(得分:1)
好的,从breeze v 1.1.1开始,遇到“未知”DataType时,breeze将不再抛出此异常。
带有“未知”数据类型的数据属性现在将出现在EntityType元数据中,其数据类型为“未定义”。
从服务器返回的任何“未定义”数据类型的数据现在将通过raw传递,这意味着数据将完全是在服务器上序列化的数据,没有任何微风处理。
目前包括DbGeometry和DbGeography类。
现在可以从 EntityType.dataProperties 属性返回的数组中删除单个数据属性。
删除属性告诉breeze,当返回给客户端时,不应将此属性具体化到此类型的任何实体上。这允许客户端有效地忽略任何服务器端属性的数据。
注意:当忽略属性也时,可能需要确保它首先不被服务器序列化。我想你已经这样做了。
希望这有帮助。