根據此post,我使用每次調用的數據上下文,因此在我的WCF服務的每種方法中,我使用使用塊創建新的數據上下文。實體框架4.1:如何使用每個調用生命週期的數據上下文?
但我有一些懷疑在這種形式的工作。例如,我使用從我的存儲庫獲取數據庫的所有客戶端的方法getAllCLients(),然後將服務發送到調用該方法的客戶端,並將其與所有客戶端進行列表。然後用戶修改其中一些的信息,例如三個。修改客戶端也許我可以添加到具有修改客戶端的列表中。
當我想更新這三個客戶端時,我可以調用一個方法updateClients(),它接收修改後的客戶端列表。我如何使用每種方法的新數據上下文,在updateCients()中獲取新的dataContext,沒有實體,所以我認爲我必須按照以下步驟操作:
1.-創建一個新的數據上下文,我想要更新的客戶端。所以我需要爲此指定條件。這是一個額外的操作(我使用getAllClients()方法獲得客戶端),所以我需要再次獲取客戶端。
2.-拋出DBSet(我使用EF 4.1)的客戶端集合並更改信息。這使我去扔我從客戶端應用程序也收到的列表。所以我必須去扔兩個名單。這需要資源。
3.-保存更改。無論如何這是需要的,所以它不需要更多的工作。
有什麼辦法可以輕鬆完成第2步?在dataContext中存在一些方法將數據從我修改的客戶端傳遞到客戶端的數據上下文中?我使用POCO實體,也許它存在一個簡單的方法來做到這一點。
其他問題是關於併發性。如果我控制併發性並允許EF(例如帶時間戳字段),爲每個客戶端調用updateClient()還是更好地向所有客戶端傳遞列表最好?我的意思是,如果我使用列表作爲參數,如果有一個客戶端的併發問題,例如第二個,第一個客戶端將正確更新,但第二個不是和第三個都不是。我如何通知用戶有些客戶有問題?
要恢復,我想知道當我有一個短生命datacontext時進行更新的最佳方式。
謝謝。 Daimroc。
那麼,我的想法是從調用中維護數據,這是因爲用戶具有訪問權限級別,並且我想僅向用戶發送用於該用戶的數據,所以我想知道一些數據如客戶端級別權限和回調。所以我認爲每次會議都是最好的選擇。我也想給你回電。在每次通話服務中是否可以使用雙面打印?謝謝。 – 2012-04-16 09:01:13
沒有雙工場景需要會話。 – 2012-04-16 09:38:01
我怎麼能知道我想撥打的客戶端(回叫)? 謝謝。 – 2012-04-16 09:47:52