Deserializacja DbGeometry za pomocą Newtonsoft.Json
Buduję SPA przy użyciu Angular, Breeze i Web API 2 zgodnie z podejściem przedstawionym przez Johna Papę w jego najnowszym kursie PluralSight.
Wszystko działa dobrze i mogę wyciągać informacje, aktualizować, wstawiać, usuwać z powrotem na serwer. Jednak używam typów przestrzennych, a gdy próbuję zaktualizować obiekt za pomocą typu przestrzennego, otrzymuję następujący błąd
Wyjątek typu „Newtonsoft.Json.JsonSerializationException” wystąpił w pliku Newtonsoft.Json.dll, ale nie został obsłużony w kodzie użytkownika
Dodatkowe informacje: Błąd pobierania wartości z „WellKnownValue” w „System.Data.Entity.Spatial.DbGeometry”.
Wewnętrzny wyjątek zdaje się wskazywać na fakt, że WellKnownValue ma wartość NULL, jednak nie, ponieważ sprawdziłem wysyłanie JSON do serwera, który jest następnie wysyłany do Breeze ContextProvider i zapisywany za pomocą metody SaveChanges.
{
"entities": [
{
"TableKey": 2,
"CaseName": "Mikhail Lermontov",
"StartDate": "2013-06-11T00:00:00Z",
"EndDate": null,
"IsCurrent": true,
"SRID": 109,
"Shape": {
"$id": "2",
"$type": "System.Data.Entity.Spatial.DbGeometry, EntityFramework",
"Geometry": {
"$id": "3",
"$type": "System.Data.Entity.Spatial.DbGeometryWellKnownValue, EntityFramework",
"CoordinateSystemId": 2193,
"WellKnownText": "POLYGON ((1695943 5462665, 1713098 5462665, 1713098 5449659, 1695943 5449659, 1695943 5462665))"
}
},
"SpillLocation": "Marlborough Sounds",
"Image": "http://www.nzmaritime.co.nz/images/lm5.jpg\r\n",
"DefaultBaseMapKey": 2,
"__unmapped": {
"isPartial": false
},
"entityAspect": {
"entityTypeName": "DatSpillCase:#Osiris.Model",
"defaultResourceName": "DatSpillCases",
"entityState": "Modified",
"originalValuesMap": {
"CaseName": "Mikhail Lermontov"
},
"autoGeneratedKey": {
"propertyName": "TableKey",
"autoGeneratedKeyType": "Identity"
}
}
}
],
"saveOptions": {}
}
Moje pytanie brzmi: możliwe jest przekształcenie typów DbGeometry w bibliotekę NewtonSoft, a jeśli nie, to jakie sugestie są dostępne, aby to obejść.