問題タブ [repository-pattern]
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.
design-patterns - リポジトリ パターンは Asp.net プロバイダー モデルと同じですか?
Asp.net 2.0 以降、プロバイダー モデルがあります。実装の詳細については、プロバイダーは、インターフェイスではなく抽象クラスである ProviderBase から派生したクラスですが、とにかくプロバイダー モデルが存在するため、web.config を編集するだけで別の実装をスワップインすることができます。たとえば、ブログ アプリを作成する場合、BlogProvider : ProviderBase を作成すると、SqlBlogProvider、OracleBlogProvider、テスト用の MockBlogProvider などの BlogProvider の実装を作成できます。
現在、Repository Pattern が人気を博しており、同じニーズを満たすためだと思いますが、実装の詳細では、通常はインターフェイスを使用するため、IBlogProvider を使用し、プロパティではなくコンストラクターを介してさまざまな実装を注入しますが、基本的にはそうしません。これら 2 つのパターンが私たちに与えたものの違いはわかりません。
個人的にはプロバイダーモデルの方が実装は自然だと思います。それで、それらの間に違いはありますか、それとも異なるコミュニティによって付けられた異なる名前を持つ同じものですか?
これについてコメントをいただければ幸いです、ありがとう、レイ。
design-patterns - リポジトリ パターンの質問 - 別のリポジトリ内でリポジトリを使用することは許容されますか?
したがって、基本的に各エンティティのリポジトリがありますが、モデルにはエンティティがモデル内で直接関連していないリレーショナル部門があります。したがって、私がする必要があるのは、その間接的な関係からクエリを実行し、エンティティのコレクションを返すことです。実際にクエリを実行しているリポジトリとは異なるリポジトリでクエリを初期化して呼び出すことは適切ですか? そうでない場合、これに対する最善の解決策は何ですか - ヘルパークラスですか?
ありがとう
linq-to-sql - ドメイン駆動設計 (Linq to SQL) - 集計の一部を削除するにはどうすればよいですか?
私は、この DDD\LinqToSql ビジネス全体について少し混乱しているようです。POCOS と linq to sql を使用してシステムを構築しており、集約ルートのリポジトリがあります。たとえば、クラス Order->OrderLine がある場合、Order のリポジトリがありますが、OrderLine は集約のルートであるため、OrderLine はありません。リポジトリには Order を削除するための delete メソッドがありますが、OrderLine を削除するにはどうすればよいでしょうか? OrderLines コレクションから行を削除する RemoveOrderLine という Order のメソッドがあると思われるかもしれませんが、基になる l2s テーブルから OrderLine を削除する必要もあります。OrderLine のリポジトリはありませんが、どうすればよいですか?
おそらく、ドメインオブジェクトが実際に集約内のものを削除するために使用するルートと内部汎用リポジトリを照会するための専用の公開リポジトリがありますか?
これに苦しんでいるのは私だけではないので、他の人が何をしたか知りたいです.... 願っています.... ありがとう
c# - C# 式を変換する方法> 式へ>
ラムダに基づいて以前に C# 式を使用したことがありますが、手動で作成した経験はありません。が与えられたExpression<Func<SomeType, bool>> originalPredicate
ので、 を作成したいと思いますExpression<Func<OtherType, bool>> translatedPredicate
。
この場合、 SomeType と OtherType には同じフィールドがありますが、関連していません (継承がなく、共通のインターフェイスに基づいていません)。
背景: LINQ to SQL に基づくリポジトリ実装があります。モデルを POCO に保持するために、LINQ to SQL エンティティを Model エンティティに射影します。式を (仕様の形式として) リポジトリに渡したいのですが、式はモデル エンティティに基づいている必要があります。しかし、これらの式をデータ コンテキストに渡すことはできません。これは、LINQ to SQL エンティティに基づく式が想定されているためです。
asp.net-mvc - リポジトリ間でメソッドを呼び出す - リポジトリ パターン
ASP.NET MVC アプリケーションでリポジトリ パターン ( https://dotnet.microsoft.com/apps/aspnet/mvcサイトの例など) を使用しています。2 つのリポジトリがあり、1 つは CategoryRepository と呼ばれ、もう 1 つは ProductRepository と呼ばれます。また、CategoryService と ProductService の 2 つのサービスを使用して、リポジトリ メソッドを検証して呼び出します。ProductService にカテゴリのリストが必要です。カテゴリを返すメソッドは、CategoryRepository に既に実装されています。私の質問は、ProductService から CategoryRepository に存在する ListCategories メソッドを呼び出す正しい方法はどれですか? ProductRepository (DRY 哲学) に別の ListCategories メソッドを実装したくありません。ありがとう。
.net - ビジネス プロセスとリポジトリ パターンでトランザクションを使用する
私は、いくつかのビジネス計算を実行し、データベースに一連のレコードを作成する必要がある状況 (かなり標準的だと思います) を持っています。何か問題が発生した場合は、データベースからすべてをロールバックする必要があります。明らかに、何らかのトランザクションが必要です。私の質問は、トランザクション サポートをどこに実装するかです。これが私の例です
データベースへの更新のいずれかが失敗した場合は、他の更新をロールバックして終了する必要があります。呼び出すことができるリポジトリを介して接続オブジェクトを公開するだけですか?
Connection.BeginTransaction()
それとも、サービス層で検証し、すべてのオブジェクトを保存してトランザクションを処理するリポジトリ内の 1 つのメソッドを呼び出すだけですか? これは私には正しくないようです。データレイヤーに多くのビジネスロジックを配置する必要があるようです。
正しいアプローチは何ですか?複数のリポジトリにまたがる必要がある場合はどうすればよいですか (または、それは悪い設計でしょうか)。
c# - 別の既存のエンティティをアタッチする必要があるエンティティを初めて保存するにはどうすればよいですか?
Companyエンティティを新しいエンティティとしてデータベースに保存する必要があります。これを行うには、CompanyTypeエンティティをCompanyエンティティに関連付ける必要があります。これなしでは会社を救うことはできません。新しく作成した会社をコンテキストにアタッチしてから、会社タイプエンティティを会社にアタッチして、結果を保存しますか?このコードは機能します...しかし、正しく感じられません。
CompanyTypeは別のコンテキストにアタッチされ、デタッチされたため、ここで渡されます。CompanyTypeIDを渡して、同じusingステートメント内の関連オブジェクトを照会する方がよいでしょうか。
LINQ to SQLが非常に簡単だった場所でEFを実行するには、多くの手順を踏まなければならないことに我慢できません。それでも-EFはNHibernateよりも簡単なようです!
c# - Entity Framework 汎用リポジトリ エラー
基本的な CRUD ステートメントを持ち、インターフェイスを使用する Entity Framework リポジトリ用の非常に一般的なジェネリック リポジトリを作成しようとしています。私は最初にレンガの壁に頭をぶつけて、ひっくり返されました。これは、Entity Framework モデルを使用し、Hurl という名前のテーブルを使用して、コンソール アプリケーションで記述された私のコードです。ID でオブジェクトを引き戻そうとするだけです。完全なアプリケーション コードは次のとおりです。
これが私が得ているエラーです:
これは、私がこの情報を抽出しようとしている場所です。
http://blog.keithpatton.com/2008/05/29/Polymorphic+Repository+For+ADONet+Entity+Framework.aspx
c# - c#とWCFのリポジトリパターンを持つWebサービス?
リポジトリ パターンを Web サービスと統合するための最良の方法を確認できる人はいますか。DataAccess、Services、プレゼンテーション レイヤーの 3 つのプロジェクトがあります。
問題は、私のプレゼンテーション レイヤーにさまざまな問題があることです... ASP.NET MVC サイトがあり、WPF アプリケーションがあり、別のサイトを作成しようとしています + 外部の会社もリポジトリにアクセスする必要があります。
現在、各サイトへの参照としてサービス層を追加したところです...しかし、Web サービスを介してデータ アクセスを提供する通常の方法ではありませんか? (WCF) - この場合、サービス層が壊れますか? または、サービス層を Web サービスに変換する必要がありますか?
この速度の長所と短所を知っている人はいますか??
c# - 2 つのサービスと 2 つのデータアクセス レイヤーを含むリポジトリ パターン - C# DDD?
誰でも助けてもらえますか、私は2つのアプリケーションを持っていますが、それらはほぼ同じです。それらは完全に異なるプレゼンテーション レイヤー (Web) を持ち、ビジネス ロジックとデータベースはほぼ同じです。基本的に、あるアプリには他のアプリにはない機能があります。
だから私はルールなどを破ることなく次のことができるかどうか疑問に思っていました
各アプリには独自のプレゼンテーション レイヤーがあります。
各アプリには独自のサービス レイヤーがあります。
各アプリには、独自のデータ アクセス レイヤーがあります。
各アプリは別のサービス レイヤーを共有します。
したがって、ビジネスロジックが同一であるため、両方のアプリがアクセスできる共有サービス層ですが、実際のアプリに固有の 5 つまたは 6 つのメソッドが含まれる別のサービス層があります。
データ アクセス レイヤー - エンティティ フレームワークを備えた 2 つの異なるデータベースがあり、そこに EDM があるため動的ではないため、これを共有する方法はわかりません。テーブルはわずかに異なります。
共有データアクセスレイヤーでIOCを使用できると思います
誰かが助けたりコメントしたりしますか、これは良い習慣です..私がやりたくなかったのは、多くが共有されているときに別のサービスレイヤーしか持たないことです..
これは良い考えですか?私のやり方が間違っているのかもしれませんが、もっと良い方法はありますか?