2

LinqToEntities を使用してリポジトリ パターンを実装する方法 インターフェイスを実装する方法

4

2 に答える 2

1

「Castle Windor」以外はほぼこれが好きです。openticket.codeplex.com をご覧ください。

于 2009-03-17T09:22:46.920 に答える
1

私は次のことを行います:

サービス層にはビジネス オブジェクトが含まれています。Inversion of Control を介してリポジトリに渡されます (Castle Windor が私の通常の選択です)。リポジトリは、ビジネス オブジェクトとエンティティ フレームワーク オブジェクトの間のマッピングを担当します。

利点: リポジトリ側でのデータ操作中に EF オブジェクトをロードするだけなので、オブジェクトの状態や EF オブジェクトのコンテキストに問題はありません。これにより、それらを WCF/Web サービスに渡すときの状況が緩和されます。

短所: Entity Framework の追跡機能の一部が失われ、データ オブジェクト (ef オブジェクト) を手動でロードする必要があります。楽観的同時実行性チェックが必要な場合は (たとえば、ビジネス オブジェクトのタイムスタンプを介して) 手動で行う必要があります。

ただし、後でリポジトリを変更できるため、一般的にはこのソリューションを好みます。これにより、さまざまなリポジトリを使用できます (たとえば、ユーザー オブジェクトは実際には EntityFrameworkRepository ではなく ASPNetAuthenticationRepository を使用しています) が、サービス レイヤーでは透過的です。

インターフェイスに関しては、サービス レイヤーのビジネス オブジェクトをパラメーター オブジェクトとして使用し、それらの EF オブジェクトをリポジトリ レイヤーの外に出さないようにします。それが役立つことを願っています

于 2008-09-11T11:44:13.007 に答える