問題タブ [unit-of-work]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
entity-framework - 作業ユニットは、EF4、IoC(Unity)、およびリポジトリのどこに属しますか?
これに関連する質問がいくつかありますが、探している答えがまだ見つからないので、質問を投稿しています。別の質問が答えを保持している場合(そして私はそれを見ていないだけです)、私にそれを指摘してください。
リポジトリパターンでEF4とUnityを使用しているときに、UnitOfWorkがどこに属しているか(具体的には作成されているか)を把握しようとしています。
基本的に、ビジネスロジックを実装するために使用されるサービスがあります。このサービスコンストラクターはリポジトリーを取り込むため、サービスは私のリポジトリーに注入されます。次に、サービスは挿入されたリポジトリを使用してデータストアに対してアクションを実行しますが、これらを作業単位でラップする必要があります。
ただし、私の作業単位には、EF4コンテキスト(または、私の場合は、コンテキストのインターフェイスであるIObjectContext)を注入する必要があります。そして、UoWをどこで作成し、コンテキストとともに挿入する必要があるのかわかりません。
これが私が考えることができる可能なオプションですが、どれも理想的ではないようです:
UoWをサービスコンストラクターに含めます。これにより、サービスが作業単位で注入され、作業単位がEF4コンテキストで注入されます。しかし、リポジトリのすべてのインスタンスでUoWを作成したくないので、これは間違っているようです。
container.Resolveを使用してオンデマンドで作成し、EF4コンテキストを挿入してUoWのインスタンスを取得します。これは、すでにUoWにアクセスできるのではなく、常にIoCコンテナにアクセスしなければならないという過剰なようです。
コンテキストをサービスに直接注入して、UoW(コンテキスト)を作成できるようにします。コンテキストをサービスに公開したので、これは悪いようです。これはリポジトリに分離する必要があります。
だから私の質問は、これらの方法の1つは受け入れられるのか、それとも私が考えていない別の方法があるのかということです。
前もって感謝します。
design-patterns - EntityフレームワークにUnitOfWorkを実装しようとしています
Unit Of Work パターンについて学習しようとしています。ただし、単純すぎず複雑すぎない例を見つけるのに苦労しています。それで、私が読んだことから私自身の何かを書いてみることにしました. 自分のしたことが受け入れられるかどうか疑問に思っていました。レイヤーを分離しようとしています。DatabaseManager を作成した理由は、コンテキストを他のレイヤーに送信しないようにするためでした。最終的に、これは中間層 (ビジネス) を持つ MVC アプリケーションの DAL になります。
ご意見ありがとうございます。
コード:
編集: 新しいコード
model-view-controller - Entity Framework 4 コンテキスト?
私は、EF4 を使用するときにコンテキストを管理するために他の人が何をしているのかについてのフィードバックを探していました。Unit of Work、Service Layer、Repository、EF4 w/POCOテクニックを使用して(私は思う:))、MVCアプリを作成しています。
私のコントローラーは、UOWを取るサービスを利用し、リポジトリを利用してEFからPOCOを取得します。
これは正しく実装されていますか?
以下をご覧ください。フィードバックをお待ちしております!!
コントローラ
作業単位
サービス
リポジトリ
entity-framework-4 - これはレイヤーを密に結合しますか?
UnitOfWork、Service Layer、Repository Pattern、および EF4 を ORM として使用する MVC アプリがあります。
私の質問は、これ (UnitOfWork) が EF へのコンテキストであるプロパティを持っていることです。私のレイヤーは密接に結合していますか?
作業単位
サービス
リポジトリ
entity-framework-4 - サービスレイヤー/リポジトリパターン
EF4でサービスレイヤー/リポジトリ/作業単位パターンを使用してMVCアプリを構築しています。
私は論理について少し混乱しています。システムを切り離すことがポイントであることは知っていますが、少し混乱しています。
そのため、MVCコントローラーはサービスを呼び出してビューモデルを埋めます。では、MVCアプリがサービスレイヤーに結合されていると言っても安全ですか?
次に、サービスレイヤーはリポジトリを呼び出して、オブジェクトを取得して永続化します。それなら、サービスレイヤーはリポジトリに依存していると言っても安全ですか?
リポジトリはEF4を利用してデータを取得してSQLServerに永続化するため、リポジトリはEF4に依存し、EF4はSQLServerに依存していると思います。
作業単位はどこに収まりますか。
例はありますか?ありがとう!!
entity-framework-4 - UnitOfWork と関心の分離?
MVC アプリで UnitOfWork/Service Layer/Repository/EF4 w/POCO 設計を使用しています。
これまでのところ、私はこれを持っています:
1) MVC Web アプリ (Project.dll)
2) サービス層 (Project.Data.Services.dll)
3) リポジトリ層 (Project.Data.Repositories.dll)
4) POCOS (Project.Data.Domain.dll)
5) EF4/コンテキスト レイヤー (Project.Data.dll)
各レイヤーは、その下のレイヤーと Project.Data.Domain (POCO クラス) のみを参照します。
現在、Project.Data.dll に UnitOfWork Interface/Base がありますが、すべてのレイヤーがそれを参照する必要があります。それは設計が悪いのでしょうか?もしそうなら、それはどこに住んでいますか?
asp.net-mvc - ASP.NET MVC でのリポジトリ パターンの実装
私はまだこれに頭を悩ませています。次のようにレイヤー(dll)を分離したい:
1) MyProject.Web.dll - MVC Web アプリ (コントローラー、モデル (編集/表示)、ビュー)
2) MyProject.Services.dll - サービス層 (ビジネス ロジック)
3) MyProject.Repositories.dll - リポジトリ
4) MyProject。 Domain.dll - POCO クラス
5) MyProject.Data.dll - EF4
ワークフロー:
1) コントローラーはサービスを呼び出して、オブジェクトを取得し、モデルの表示/編集を行います。
2) サービスはリポジトリを呼び出して、オブジェクトを取得/保持します。
3) リポジトリは EF を呼び出して、SQL Server との間でオブジェクトを取得/永続化します。
私のリポジトリは IQueryable(Of T) を返し、その中で ObjectSet(Of T) を利用します。
これを見ると、レイヤーは正確に次のレイヤーとPOCOクラスを含むライブラリに依存していますか?
いくつかの懸念事項:
1) リポジトリが EF で正しく動作するためには、それらは System.Data.Objects に依存します。これで、リポジトリ レイヤーで EF と密結合になりました。それは悪いことですか?
2) UnitOfWork パターンを使用しています。それはどこに住むべきですか?これには ObjectContext としての Property Context があるため、EF にも密接に結合されています。悪い?
3) これを簡単にするために DI を使用するにはどうすればよいですか?
テストのために、これを可能な限り疎結合にしたいと考えています。助言がありますか?
- - - - - 編集 - - - - -
ここで正しい軌道に乗っているかどうか教えてください。また、サービスには IRepository(Of Category) の権利が注入されますが、それと EFRepository(Of T) の具象クラスとの違いをどのように認識しますか? UnitOfWork と Service と同じですか?
誰かが私が理解できるところまでこれを理解するのを手伝ってくれたら、それは些細なことのように思えるでしょうが、私はこれに頭を悩ませています!!
コントローラ
サービス
リポジトリと UnitOfWork
asp.net-mvc - エンティティフレームワークコンテキスト?
EFコンテキストがMVCアプリのどこで管理されているかを理解するのに本当に苦労しています。
私はService/Repository / EFアプローチを使用しており、UnitOfWorkパターンをその内部のコンテキストで遊んでから、コントローラーアクション内でそれを使用してさまざまなサービスを利用していました。それは動作しますが、これを行うことで、コントローラーをEFに依存させていますか?
助言がありますか?
asp.net - Unity インジェクションで Unit of Work を使用する適切な方法
Unity、POCO クラスを備えたエンティティ フレームワーク 4、DAL 用のリポジトリ パターン、およびビジネス ロジック コントロール用のサービスを使用しています。また、Unit of Work を使用して、さまざまなサービスで実行する CRUD 操作をまとめてパッケージ化し、それらをまとめてコミットできるようにしたいと考えています。
私の質問は、Unit Of Work メカニズムを Microsoft Unity を使用してアプリケーションに挿入する適切な方法は何でしょうか? IUnitOfWork をリポジトリと一緒に適切なサービスのコンストラクターに配置できることを理解しています。Unity マッピングが指定されている場合、適切なインスタンスが自動的に開始されますが、この方法ではグローバルな作業単位を渡すのではなく、これは賢明な方法ではありません (実際には、リポジトリはサービスの前でも開始されます)。
私は何が欠けていますか?(私が今書いたように、サービスとそのリポジトリのコンストラクターコードが添付されています)。
また、Unity の ParameterOverrides メソッドを使用して Unit of Work のグローバル インスタンス (たとえば aspx.cs ファイルから) を取得し、それをサービスに渡してからリポジトリに渡すことができることも理解しています。しかし、それは少し不自由なようです。これは私の唯一のオプションですか?
ありがとう