1

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

微风js错误:

Unable to recognize DataType for: Edm.Geography 
4

1 回答 1

1

好的,从 1.1.1 版开始,当遇到“未知”数据类型时,微风将不再抛出此异常。

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

从服务器返回的任何“未定义”数据类型的数据现在将通过原始数据传递,这意味着数据将完全是在服务器上序列化的数据,无需任何轻量处理。

这目前包括 DbGeometry 和 DbGeography 类。

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

删除一个属性会告诉微风,当返回给客户端时,这个属性不应该被具体化到任何这种类型的实体上。这允许客户端有效地忽略任何服务器端属性的数据。

注意:在忽略一个属性时可能需要确保它不会被服务器序列化我认为你已经在这样做了。

希望这可以帮助。

于 2013-02-07T20:31:05.290 回答