Я строю SPA, используя Angular, Breeze и Web API 2, следуя подходу, описанному Джоном Папой в его последнем курсе PluralSight.Deserializing DbGeometry with Newtonsoft.Json
Все работает хорошо, и я могу извлекать информацию, обновлять, вставлять, удалять обратно на сервер. Тем не менее, я использую пространственные тип, и когда я пытаюсь обновить сущность с пространственным типом я получаю следующую ошибку
Исключения типа «Newtonsoft.Json.JsonSerializationException» произошло в Newtonsoft.Json.dll но не обрабатывался в коде пользователя
Дополнительная информация: Ошибка получения значения из 'WellKnownValue' на 'System.Data.Entity.Spatial.DbGeometry'.
Внутреннее исключение, кажется, указывает на то, что WellKnownValue является пустым, его не менее, как я проверил JSON отправляется на сервер, который затем отправляется в Breeze ContextProvider и сохраненные с помощью метода 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": {}
}
Так что мой вопрос, можно десериализации типы DbGeometry в библиотеке NewtonSoft, а если нет, то какие предложения есть, чтобы обойти это.
Что я использую для сериализации и десериализации переменных типа географии, является GeoJSON. Уже есть незавершенная библиотека для .Net по этому адресу https://github.com/jbattermann/GeoJSON.Net, хотя все еще есть некоторые вещи, вы всегда можете написать свои собственные сериализаторы/десериализаторы из этого проекта. –