3

我有一個數據庫第一實體框架5數據訪問層映射到一個包含稱爲CenterCoordinate的SQL幾何類型字段的表。由此產生的實體包含:如何控制JSON.NET序列化的System.Data.Spatial.DbGeometry

public System.Data.Spatial.DbGeometry CenterCoordinate {get;組; }

我的客戶端JavaScript請求API並只接受JSON。然後,我使用Asp.net Web API使用默認格式化程序(JSON.NET)來提供此服務。在API控制器中,該字段有一長串屬性,包括XCoordinate和YCoordinate。

在客戶端的JSON只包含此:

幾何:對象 CoordinateSystemId:3498 WellKnownBinary:空 WellKnownText: 「POINT(6438089.715 1801515.828)」

我真的不希望有解析出WellKnownText以獲得X和Y的值。

所以問題是如何控制System.Data.Spatial類型的序列化/反序列化到/來自JSON,使我得到更多的東西有用? JSON.net格式化程序如何知道要包含/排除什麼?

注意:我真的不想裝飾具有屬性的實體,因爲每次從數據庫重新生成模型時都會丟失這些實體(我不知道爲什麼我們無法通過VS2012向模型字段添加屬性,它在再生之後記住它們)。那麼這可以與部分類或重寫格式化?

謝謝,馬特

回答

1

不幸的是,如果你想操作的JavaScript座標你或多或少卡解析WellKnownText領域。

幾何是一種通過WKT字段保存到數據庫的SQLSpatial類型,所以這就是您的DbGeometry類型將JSON轉換爲該格式的原因。

如果它讓你感覺好一點,那現在就讓我感到麻煩了。


編輯:這些資源可能會有點幫助:

GeoJSON的具有結構更類似於SpatialSQL:

這是用於序列化/反序列化DbGeo類型作爲JSON溶液:

+0

感謝您的保證。我可能會轉移到DTO的,甚至轉儲實體框架... – MattPil29 2013-06-13 19:44:32