1

以下のクラスを公開するために、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

そよ風のjsエラー:

Unable to recognize DataType for: Edm.Geography 
4

1 に答える 1

1

わかりました、そよ風の v 1.1.1 の時点で、そよ風は「不明な」データ型に遭遇したときにこの例外をスローしなくなりました。

「不明な」データ型を持つデータ プロパティは、「未定義」の DataType を持つ EntityType メタデータ内に表示されるようになりました。

サーバーから返された「未定義」のデータ型のデータはそのまま渡されるようになりました。つまり、データはサーバー上でシリアル化されたものとまったく同じであり、簡単な処理は必要ありません。

これには、現時点では DbGeometry および DbGeography クラスが含まれます。

EntityType.dataPropertiesプロパティによって返される配列から個々のデータ プロパティを削除できるようになりました。

プロパティを削除すると、クライアントに返されるときに、このプロパティをこのタイプのエンティティに実体化してはならないことが簡単にわかります。これにより、サーバー側のプロパティのデータがクライアントによって事実上無視されるようになります。

注: プロパティを無視する場合は、最初にサーバーによってシリアル化されないようにすることをお勧めします。あなたはすでにこれをやっていると思います。

お役に立てれば。

于 2013-02-07T20:31:05.290 に答える