2012-04-11 41 views
3

我正在編寫一個應用程序(WPF),我使用棱鏡框架。我有一個shellview客戶端。 我有一些模塊。這是不同的項目。每個模塊都是一個獨立的項目。 模塊由Unity加載。Prism +模塊使用WCF作爲數據訪問層

我有以下

Solution 
Client 
    Modules 
    Client (app) 

Common 
    Entities 

Server 
    Data 
    Web 

所以你可以看到我有一個數據項目的服務器文件夾下。在那裏你可以找到edmx。 Web項目爲空,Entities項目也爲空。

客戶端(應用程序)具有帶引導程序的shellview。 客戶工作。只有數據訪問層必須被集成。

什麼是數據訪問的最佳解決方案? WCF,別的? 我們需要爲實體使用什麼樣的模板。我們如何在代碼(View/ViewModel)所在的模塊中使用該服務?

PFF,我正在閱讀和閱讀這麼多。 在stackoverflow上找到了一些主題。但是從一開始就沒有任何話題開始。 希望有人能幫助我。

+0

您使用哪種數據訪問方法與使用棱鏡/統一的選擇非常正交。您選擇的方法將更多依賴於其他因素,例如數據庫的外觀,您是否控制數據存儲,您的可伸縮性需要什麼,是否要使用ORM等。 – lecrank 2012-04-11 18:58:25

+0

您應該嘗試專注於問題更好。你問了一些問題(什麼方法的數據訪問?我可以直接從我的viewModel使用我的DAL等)這些都是你應該單獨詢問的所有問題,並且如果你期望人們瞭解你的環境問題並提供良好的建議。否則,你似乎只是在說:「我設計了這個項目的一部分,但被卡住了......有人可以在互聯網上爲我做剩下的事嗎?」 – lecrank 2012-04-11 19:00:06

+0

我的數據庫是與實體框架一起構建的。從我生成的edmx生成代碼。可伸縮性 - >它只能用於我的本地網絡。我已經使用了WCF服務,但沒有使用edmx features/modules prism。總是直接從服務到客戶,我自己寫的合同。現在它應該使用edmx實體。我不希望有人做剩下的事情。我希望只有有人能幫助我,才能開始。 – Sven 2012-04-12 07:04:25

回答

0

我建議您在.edmx上生成POCO或STE,並使用存儲庫模式進行數據庫訪問。創建一個單獨的WCF服務項目並調用這些存儲庫。

您的Prism解決方案將使用靜態類的代理項目來返回服務對象,並且您的客戶端(Prism)應用程序將調用WCF服務。

+0

你有沒有一個例子的網站?我也發現一些信息,POCO是不行的。現在你應該使用DbContext? – Sven 2012-04-19 08:01:04

+0

檢查此鏈接 http://microsoftnlayerapp.codeplex.com/ – 2012-04-19 10:27:00

+0

問題不在於如何使用WCF ....。但更多WCF與棱鏡和WPF,而不是Silverlight。 – Sven 2012-04-19 18:24:43

0

可能您可以看看Calcium SDK(http://calcium.codeplex.com/),它利用Prism模塊化應用程序開發以及對WCF服務的支持。

+0

我認爲這對我需要的東西有點大。它不需要WCF。它也可能與其他一些技術。 :) – Sven 2012-04-20 07:44:51

0

如果你是服務器端的WCF和EntityFramework家庭,那麼這就是要走的路。

爲了從服務中重用生成的代理類,您可以將您的服務引用保留在您從所有模塊引用的常見程序集中。像「基礎設施」是一個很好的命名約定。

如果您的某個模塊需要獨特的功能,那麼您將該服務引用放在該項目上。

在WPF clent的情況下:首先使用實體​​框架代碼,並將您的Model類放在單獨的程序集中,以便您可以在主客戶端和模塊中重用它們。

在silveright客戶端的情況下: 如果有相同的模型類和命名空間時生成服務代理是你的問題,你可以檢出WCF RIA服務。請始終記住,您可以使用Visual Studio項目文件屬性中的RIA鏈接將兩個程序集鏈接爲silverlight和.net。然後,您選擇的任何服務器端代碼文件都可以在客戶端上重用。無論您是否使用WCF服務,都可以在您的文件名中使用「shared」後綴(例如:enums.shared.cs)。你可以找到更多herehere

希望這可以幫助。

+0

我不想在我的項目中使用silverlight。 :( – Sven 2012-04-20 18:15:57

+0

對不起Silverlight的一部分我被帶走:) 剛剛更新我的答案,以更好地覆蓋WPF部分。 – cleftheris 2012-04-24 10:14:38

+0

這不是問題所在。我已經創建了一些Common.Model。我在哪裏添加了我的實體。我的服務也在運行。唯一的問題是在我的客戶端應用程序中使用該服務。那使用棱鏡。所以我有不同的模塊。 – Sven 2012-04-24 11:18:54