2012-04-11 10 views
3

私はプリズムフレームワークを使用するアプリケーション(WPF)を作成しています。私はshellviewのクライアントを持っています。 私はいくつかのモジュールを持っています。だからそれは別のプロジェクトです。各モジュールはセパレートプロジェクトです。 モジュールはUnityによってロードされます。プリズム+モジュールはWCFをデータアクセス層として使用します

は、私はあなたが私は、サーバーのフォルダの下にデータプロジェクトを持って見ることができ、次の

Solution 
Client 
    Modules 
    Client (app) 

Common 
    Entities 

Server 
    Data 
    Web 

を持っています。ここでedmxを見つけることができます。 Webプロジェクトが空であり、Entitiesプロジェクトも空です。

クライアント(アプリケーション)には、ブートストラップを備えたシェルビューがあります。 クライアントが動作します。データアクセス層のみを統合する必要があります。

データアクセスを実行する最適なソリューションは何ですか? WCF、他に何か? エンティティにどのテンプレートを使用する必要がありますか。コード(View/ViewModel)がどこにあるモジュールでサービスを使用するには?

Pff、私は見て、そんなに読む。 stackoverflowに関するトピックが見つかりました。しかし、話題のどれも始まりから始まっていません。 誰かが私を助けることを願っています。

+0

あなたが使用するデータアクセスの方法は、プリズム/単一性を使用するあなたの選択にかなり直角です。選択した方法は、データベースの外観、データストアの管理の有無、スケーラビリティの必要性、ORMを使用するかどうかなど、他の要因によって異なります。 – lecrank

+0

より良い質問。あなたはいくつかの質問をしました(どのようなデータアクセス方法ですか?私のviewModelからDALを直接使うことができますか?など)。これらはすべてあなたが別々に質問する必要があります。問題を解決し、良いアドバイスを提供する。そうでなければ、あなたは単に「私はこのプロジェクトの一部を設計しましたが、立ち往生しています...インターネットの土地にいる誰かが私のために残りをすることができますか? – lecrank

+0

私のデータベースはEntity Frameworkでビルドされています。私が作成したedmxからコードを生成しました。スケーラビリティ - >私のローカルネットワークでのみ使用されます。私はすでにWCFサービスを使用していましたが、edmx機能/モジュールプリズムでは使用しませんでした。常にサービスからクライアントに直接、自分で書いた契約で。これで、edmxエンティティを使用する必要があります。私は誰かが残りをすることを望んでいない。誰かが私を助けて、正しいことを願ってほしい。 – Sven

答えて

0

.edmxでPOCOまたはSTEを生成し、データベースアクセスにリポジトリパターンを使用することをお勧めします。別のWCFサービスプロジェクトを作成し、これらのリポジトリを呼び出します。

あなたのプリズムソリューションはサービスオブジェクトを返すための静的クラスを持つプロキシプロジェクトを持ち、クライアント(プリズム)アプリケーションはWCFサービスを呼び出します。

+0

例があるサイトがありますか?私はまた、POCOは何の情報も見つけません。今あなたはDbContextを使うべきですか? – Sven

+0

このリンクをチェックしてください http://microsoftnlayerapp.codeplex.com/ –

+0

問題はWCFの操作方法ではありません....。しかし、プリズムとWPFのためのSilverlightではなく、もっとWCF。 – Sven

0

WCFサービスのサポートとともに、プリズムモジュラーアプリケーション開発を活用するCalcium SDK(http://calcium.codeplex.com/)をご覧ください。

+0

私はそれが私が必要とするもののために少し大きいと思う。それはWCFでは必要ありません。他の技術者と一緒にいるかもしれません。 :) – Sven

0

サーバー側でWCFとEntityFrameworkを使用している場合は、この方法が適しています。

生成されたプロキシクラスをサービスから再利用するには、サービス参照をすべてのモジュールから参照する共通のアセンブリに保持することができます。 「インフラストラクチャ」のようなものは良い命名規則です。

モジュールの1つに独自の機能が必要な場合は、サービス参照をそのプロジェクトに置きます。

WPFの場合clent:まずエンティティフレームワークコードを使用し、Modelクラスを別のアセンブリで分離して、メインクライアントとモジュールで再利用できるようにします。 silverightクライアントの場合

:重複したモデルクラスと名前空間の場合 サービスプロキシを生成しますが、WCF RIA Servicesをチェックアウトすることができますあなたのための問題です。 Visual Studioのプロジェクトファイルプロパティで、RIA Linkを使用して2つのアセンブリにSilverlightと.NETをリンクすることができます。次に、選択したサーバーサイドコードファイルをクライアント上で再利用できます。これは、WCFサービスを使用しているかどうかにかかわらず、ファイル名(例:enums.shared.cs)の "shared"接尾辞を使用して可能です。あなたはもっと知ることができますherehere

希望これは助けました。

+0

私は私のプロジェクトでsilverlightを使用していません。 : – Sven

+0

Silverlightの部分に申し訳ありません。私は持ち去りました:) WPFの部分をより良くカバーするために私の答えを更新しました。 – cleftheris

+0

これは問題ではありません。私は既にいくつかのCommon.Modelを作成しました。私は自分のエンティティを追加しました。私のサービスも稼動しています。唯一の問題は、クライアントアプリケーションでそのサービスを使用することです。それはプリズムを使っている。だから私は別のモジュールを持っています。 – Sven

関連する問題