2010-05-11 43 views
3

我們有一個基於EF4/POCO的現有存儲庫,並且運行良好。我們希望使用WCF數據服務添加服務層並尋找一些最佳實踐建議。WCF Data Services使用基於EF的存儲庫中的數據

到目前爲止,我們已經開發了一個具有IQueryable屬性的類,並且getter觸發了「獲取所有用戶」方法。到目前爲止,這個問題是雙重的:

1)它需要我們裝飾poco對象的ID字段來告訴數據服務什麼字段是id。這意味着我們的POCO對象不是「純粹的」。

2)它無法弄清楚對象之間的關係(這很明顯我猜)。

我現在停止了這種方法,我在想,也許我們應該從存儲庫中公開OBjectContext並使用EF的更多「自動」功能。

有沒有人有任何建議或與WCF數據服務使用存儲庫模式的例子?

+0

+1好問題,這個是什麼新東西? – 2010-05-19 14:31:51

回答

0

我想這是一個務實的問題。裝飾POCO是否打破了其他任何東西?如果沒有,也許這是最好的辦法。

WCF數據服務和oData是相當新的,我也一直在尋找指導,它似乎有點薄。

+0

不,但我也發現,poco需要使用IQueryable來定義它們的關係,而不是T4生成的是ICollection;你認爲這會產生多大的影響? – 2010-05-11 14:03:33

0

你可以擴展一些你想要公開的內容,以及誰會使用它?

我在我們的項目

  • 具有MyRepository迄今所看到的問題:ObjectContext的和 MyDataService:DataService的拆分邏輯,所以我們已經 創建助手。我想我們可以繼承Repository - (從字面上我只是想到了這一點!)
  • 查詢和更改攔截器是你的朋友,但 應該委託給助手(或基類)以確保 DRY。即 - 如果您的存儲庫已具有GetAllUsers,並執行邏輯, myservice.svc /用戶不處理, 您可能需要實現查詢 攔截器進行篩選 - DRY意味着幫助器(或基本方法)這兩個 存儲庫和攔截器可以 使用。
  • asp.net的兼容性讓你 很好地挖掘到認證/授權 - 在查詢 攔截器,這是一個很好的方式 確保你被允許只看到你被允許看到 事情。

幾個陷阱....

  1. 如果它的Flash/Flex的基礎,你會 可能有與Flash/Flex的 不能夠使用HTTP PUT /合併或刪除問題。你避開 這種利用X列舉HTTPMethod-覆蓋

  2. 如果它的JavaScript/jQuery的,讓 確定打開JSON

總之,我真的很喜歡它,超快速的揭露一個API,並且假設您沒有繁重的業務邏輯,那麼運行良好。

相關問題