在MapGuide開發中你可能注意到有兩個相關的函數可以用來更新資料,他們是FeatureService.UpdateFetures() 和 MgLayer.UpdateFeatures(),那麼這兩個函數有什麼差別嗎?大家先看下面兩段代碼:
首先看使用FeatureService.UpdateFeatures的代碼片段:
還有這個使用MgLayer.UpdateFeatures()的代碼片段:
這兩段代碼都是沒問題的。實際上對于Parcel這樣可以表示成圖層的資料源來說,這兩段代碼是等效的。第一種FeatureService.UpdateFeature()是更底層的API,适用于MapGuide OpenSource 1.0以來的所有版本。為了簡化圖層對應的資料源的操作,比如在某圖層上增加一些要素,後來的MapGuide版本中提供了新的API -- MgLayer.UpdateFeature(). 不過從概念上來講,圖層本身并不包含資料,圖層隻是資料源的一種表現形式,真正的資料是儲存在資料源Datasource裡面的。是以這個新API的實作也是調用了底層MgFeatureService.UpdateFeatures()而已。對于可以表現為圖層的資料源的更新,這兩種方法都可以。
但對于不能表現為圖層的資料源的更新,那就隻能用MgFeatureService了,比如你需要對資料源中的某個資料表進行操作,而這個資料表沒有Geometry字段不能表示為圖層,那就隻能用MgFeatureService了。總結,如果為了相容那麼就用MgFeatureService.UpdateFeatures(). 。如果為了簡單就用MgLayer.UpdateFeatures().
題外話,對于這樣的純資料表的操作,你當然可以用ADO.NET的純資料庫操作方法,不過FDO(MgFeatureServier)也沒問題哦,FDO其實也是一種資料庫通路層,無論是對GIS資料源還是普通的資料源而言,FDO都可以的 :)
轉載請保留此資訊。
本文轉自峻祁連. Moving to Cloud/Mobile部落格園部落格,原文連結:http://www.cnblogs.com/junqilian/archive/2013/01/22/2870907.html,如需轉載請自行聯系原作者