从微风的ef上下文中省略元数据

时间:2013-02-07 16:54:33

标签: javascript vb.net asp.net-web-api breeze

我正在使用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 

1 个答案:

答案 0 :(得分:1)

好的,从breeze v 1.1.1开始,遇到“未知”DataType时,breeze将不再抛出此异常。

带有“未知”数据类型的数据属性现在将出现在EntityType元数据中,其数据类型为“未定义”。

从服务器返回的任何“未定义”数据类型的数据现在将通过raw传递,这意味着数据将完全是在服务器上序列化的数据,没有任何微风处理。

目前包括DbGeometry和DbGeography类。

现在可以从 EntityType.dataProperties 属性返回的数组中删除单个数据属性。

删除属性告诉breeze,当返回给客户端时,不应将此属性具体化到此类型的任何实体上。这允许客户端有效地忽略任何服务器端属性的数据。

注意:当忽略属性时,可能需要确保它首先不被服务器序列化。我想你已经这样做了。

希望这有帮助。