簡體   English   中英

WCF數據服務使用基於EF的存儲庫中的數據

[英]WCF Data Services consuming data from EF based repository

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

到目前為止,我們已經開發了一個具有IQueryable屬性的類,並且getter觸發了存儲庫'get all users'方法。 到目前為止,問題有兩方面:

1)它要求我們裝飾poco對象的ID字段以告訴數據服務哪個字段是id。 這意味着我們的POCO對象不是“純粹的”。

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

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

有沒有人有任何關於在WCF數據服務中使用存儲庫模式的建議或示例?

我想這是一個務實的問題。 裝飾POCO會破壞別的嗎? 如果沒有,也許這是最好的方式。

WCF數據服務和oData都很新,我一直在尋找指導,看起來有點薄。

您是否可以進一步擴展您想要展示的內容,以及誰將使用它?

到目前為止我在項目中看到的問題

  • 有一個MyRepository:Objectcontext和一個MyDataService:DataService拆分邏輯,所以我們創建了幫助器。 我想我們可以繼承Repository - (字面意思只是想到了我輸入的內容!)
  • 查詢和更改攔截器是您的朋友,但應委托給幫助程序(或基類)以確保DRY。 ie - 如果你的存儲庫已經有了GetAllUsers,並且做了myservice.svc / Users無法處理的邏輯,你可能需要實現一個查詢攔截器來進行過濾 - 再次DRY意味着一個幫助器(或基本方法),這兩個存儲庫和攔截器可以使用。
  • asp.net兼容性允許您很好地利用身份驗證/授權 - 在查詢攔截器中,這是一種很好的方法,可以確保您只能看到您可以看到的內容。

幾個陷阱....

  1. 如果它是基於Flash / Flex的,您可能會遇到Flash / Flex無法使用HTTP PUT / MERGE或DELETE的問題。 你可以通過使用x-httpmethod-override解決這個問題

  2. 如果是javascript / jquery,請確保打開json

總的來說,我真的很喜歡它,一種暴露API的超快速方式,如果你沒有繁重的業務邏輯,它運行良好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM