2012-02-08 28 views
1

我有一個使用sqlgeography的實體/表。實體部分類中的屬性

由於EF 4.X不支持空間類型,我只是來回發送字段的字節。

我已經在處理代碼端的對話和屬性的數據庫端存儲了procs來完成這項工作。

要在代碼中添加屬性,我使用了部分類。

其中一個屬性是SqlGeography,它只是簡單地包裝byte []屬性來處理獲取和設置。

使用NotMappedAttribute從EF隱藏此屬性。

另一個是暴露byte []本身的屬性,並用EdmScalarPropertyAttribute和DataMemberAttribute裝飾。

然後我去EF模型設計器(* .edmx)指向Insert/Update/Delete存儲過程的實體模型。

它發現存儲的過程是正常的,並意識到它們(在適當時)採用VARBINARY參數。

它還有一個下拉菜單,允許您選擇映射到該參數的實體類的屬性。

但是,此下拉列表不會列出我的任何屬性。我不關心SqlGeography屬性,因爲它意味着對EF隱藏,但是對於我來說,能夠將它指向byte []屬性非常重要,因爲這是數據的來源。

我非常想避免數據庫觸發器或包裝類和附加字段來使其工作。

我試着手動編輯.edmx文件以包含byte []屬性,但它只是抱怨它未映射。

任何人都可以給我一些見解,如何讓這個工作?還是選擇最終結果的另一種方法?

回答

0

最後,我們會爲每個表中的計算列暴露出空間數據作爲字節。

然後我們使用存儲的特效插入和更新空間數據。

1

我們可以使用視圖來爲我們創建二進制字段,但這需要手動爲數據中的關係創建大量的xml。

這幾乎使使用EF這一點變得簡單和容易。

對於這個項目我們只需在表格中添加一個二進制字段,然後用sprocs來處理服務器上的會話和部分實體類中的屬性,以暴露模型中的地理類型。

下一個項目我懷疑我們會使用EF。 Dapper更加無痛,即使它們涉及更多的代碼寫入。

下面是如果有人認爲這將是適用於他們使用視圖鏈接:

http://thedatafarm.com/blog/data-access/yes-you-can-read-and-probably-write-spatial-data-with-entity-framework/

http://smehrozalam.wordpress.com/2009/08/12/entity-framework-creating-a-model-using-views-instead-of-tables/

相關問題