問題タブ [irepository]
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.
sql - DAL2 クエリにフィールド名がなく、SELECT NULL が表示されるのはなぜですか?
DNN 7+ で使用するモジュールを作成しており、データ アクセスに DAL2 を使用したいと考えていますが、データベースからアイテムを選択する際に問題が発生しています。
私のコードはデータベースに正常に接続しているように見えますが、DAL2 によって生成されたクエリには、データベース テーブル内のフィールドの名前が含まれていません。SQL Server プロファイラーを実行して、データベースに何が届くかを監視し、"SELECT NULL FROM Product..." で始まるクエリを確認しています。「SELECT * FROM Product...」または「SELECT ProductCode FROM Product...」が表示されることを期待しています。
問題を特定し、完全なコード サンプルを含めることができるようにするために、次のようにテストを行いました。 Product.cs ファイルがあります。
ProductRepository.cs ファイルがあります。
ビューでこれら 2 つのファイルを次のコードで使用します。
このコードを実行している間、SQL Server プロファイラーを使用して監視すると、次のクエリが実行されることがわかります。
上記の選択クエリが NULL を選択している理由がわかりません。Product.cs ファイルまたは * 文字からの製品フィールドのリストを期待しています。
productCode のデータベース フィールド定義 (Microsoft SQL Server Management Studio のツリー ビューから見た場合) は次のとおりです。
外部データベースに接続していますが、データが特定のモジュールまたはポータルに接続されていません。そのため、スコープとして「productCode」を指定します。データがポータルまたはモジュールに関連付けられていない場合、スコープの適切な使用方法がわかりません。問題が Product.cs ファイルの Scope 属性に関連していないことを確認するために、Scope 変数を "PortalId"、"ModuleId"、"productCode"、および "Nothing" に設定してテストしました。これらの値はすべて、SQL Server プロファイラーに同じクエリが表示されました。
また、Scope 属性を完全に削除してテストしました。Scope 属性が含まれていない場合、SQL Server プロファイラーで次のクエリが表示されました。
Scope 属性が除外されたときに WHERE 句が削除された理由はわかりませんが、それがテスト結果で示されました。
Scope 属性を使用したこれらのテストにより、私が見ている「SELECT NULL」の問題とは関係がないと信じるようになりましたが、完全を期すためにここに含めたいと思いました。
なぜこれがNULLで選択を作成するのですか?データを選択するにはどうすればよいですか?
ありがとう!
asp.net-mvc-4 - キャッスル ウィンザー ワイヤー 2 種類のジェネリック リポジトリ
こんにちは、ここにあるコード例を変更しようとしています http://imar.spaanjaars.com/577/aspnet-n-layered-applications-implementing-a-repository-using-ef-code-first-part-5
彼の例では、構造マップを使用しています。それをウィンザーに変換すると、次を使用して 1 つのリポジトリで動作させることができます。
しかし、私が本当にやりたいことは、すべてのリポジトリベースのインターフェースをその実装にマップすることです。これが IRepository です。T はエンティティ、K は主キーの種類です。
その実装は
私のコントローラーには、コンストラクターパラメーターとしてインターフェイス IPeopleRepository があります。
このようなすべてのリポジトリを登録するために1つの登録をしたいのですが、一致せず、登録されていないサービス「Spaanjaars.ContactManager45.Model.Repositories.IPeopleRepository」というエラーが表示されます
これに関して何が欠けていますか?私のレポジトリには2つのジェネリック型があるからですか?
c# - EF を使用して同じリアルタイム データにアクセスする複数のリポジトリを設計する方法は?
EFを使用して同じデータベースにアクセスする複数のリポジトリを設計する際のロープを学ぶための助けを実際に探しています。各リポジトリに独自のプライベート DBContext があるサンプル コードを見たことがありますが、この概念に問題があります。このプロジェクトのジェネリック インターフェイスには興味がありません。
継承されたインターフェイスが再利用可能な単一のアプリケーションで、(承認に基づいて) 1 つがIdentity
ベースになっている複数のインターフェイスと、カテゴリ、アイテムなどの他のジョブ固有のリポジトリが必要です。したがって、複数のDbContext
インスタンスが必要です。
SQL ではトランザクションをコミットまたはロールバックできるトランザクションがあるため、EF では複数のリポジトリが同じ (リアルタイム) データにアクセスしますか? おそらく、単一のアプリケーションに多くのジョブ固有のリポジトリを継承させたい場合、DAL をどのように設計すればよいかという質問の方が適切でしょう。
jgauffinは、 「リポジトリが 100% 完全に抽象化されていることを確認してください」とはどういう意味ですか?
これはどういう意味ですか?
これは、私が理解しようとしていることの簡単な例です。この慣行は合理的ですか?
そして、2番目のリポジトリもOneRepoによる同じdb接続を必要としますが、メモリ内の作業単位が個別にあると思いますか?
私の質問がうまく書かれていない場合は申し訳ありません。私は実際に投稿することに比較的慣れていないため、自分自身を明確にしているかどうかわかりません. 一般的に一般的なリポジトリが好きではなく、Role Interface パターンを使用して承認および/またはユーザー タスクに基づいてリポジトリを作成したいと考えています。説明の助けをいただければ幸いです。
c# - レーティングをセッションに保存するにはどうすればよいですか?
これは、医師を評価するためのハイブリッド (Web フォームと MVC) .NET Web サイトです。以下は私のGridViewです。ユーザーはラジオ ボタンをクリックして評価できます。評価は Doctor オブジェクトに保持され、Doctor オブジェクトは現在のユーザーの評価と平均的なユーザーの評価を表示できる必要があります。オブジェクトをセッションに保存するにはどうすればよいですか? ログオンはありません。
コードビハインド:
entity-framework - エンティティ フレームワーク コードは、IRepository パターンを使用して呼び出されたときに、分離されたオブジェクトを最初に返します。
Entity Framework Code First で IRepository パターンを使用してオブジェクトをフェッチしようとしています。通常、リポジトリを呼び出すと、コンテキストに関連付けられたオブジェクトが返され、変更が追跡されます。私の問題は、リポジトリが切り離されたオブジェクトのみを返すように見えることです。
あるオブジェクトを別のオブジェクトに追加するとき、何らかの理由で容器が切り離されたものとして処理されるため、savechange は、相互に接続されている両方のオブジェクトを一方を挿入し、もう一方を外部オブジェクトとして接続するのではなく、挿入されたものとして扱います。そもそもクエリ時にアタッチする必要があるため、血管オブジェクトをアタッチすることで解決できることはわかっています。これは探しているものではありません。
Iリポジトリ
EFRepository (IRepository の実装)
それを呼び出す
asp.net-mvc - MVC リポジトリ パターン データのバインド
リポジトリ パターンを使用するのに苦労しています。リポジトリ パターンを 2 つ作成することはできますか? 1つは製品用、もう1つは注文用??
これらのリポジトリをデータベースに接続できませんでした。私は 1 つのリポジトリで作業する方法を知っていますが、T: Entity が失われている IRepository で 2 つを使用します。問題は、ProductRepository と OrderRepository を作成する場合、ルールを作成でき、揮発しないかどうかです。
c# - ninject iunitofwork をリポジトリ スコープ属性に注入
現在のセットアップから始めて、何を達成しようとしているのかを説明しましょう。NHibernate を使用しており、Ninject で IRepository/IUnitOfWork パターンを実装しようとしています。ASP.Net、WCF、またはその他のコードを使用しているアプリケーションで一般的に機能することが理想的です。
IUnitOfWork
UnitOfWork
Iリポジトリ
GenericRepository
IOC コンテナーとして Ninject を使用しています。目標は、UnitOfWork の作成のライフ サイクルで同じ IUnitOfWork を再利用することです。呼び出し元のアプリケーションが何であれ、実装されているライフサイクルが機能するようにしたいのですが、それ以外の場合は、オンラインのほとんどの提案のように InRequestScope を使用しただけです。私はこのようなことをすることができました:
そして私のバインディングは次のように設定されています:
そして、このバインディング構成は実際には上記の に対して機能MyService
し、コンストラクターで一度 UnitOfWork を作成し、IRepo impl に対しても同じ UnitOfWork を使用します。これは、それらが実際に何層下にあるかに関係ありません。
しかし、私ができるようにしたいのは、IUnitOfWork をアプリケーションから完全に隠すことです。メソッドの上に配置できる TransactionAttribute を提供すると、エントリ時に IUnitOfWork が作成され、その同じインスタンスが、TransactionAttribute のスコープ内の IUnitOfWork に対する今後のすべての要求に挿入されます。そして、それに応じてコミットとロールバックを処理します。したがって、前のコードは次のようになります。
このような[Transaction]でメソッドをマークできるようにする、私ができるバインディングセットアップの種類はありますか? 私は IUnitOfWork と IRepository のいくつかのマイナーな再構築にオープンであり、サービス層のコードは単なるスクラップ コードであるため、非常に柔軟に対応できます。
save - Orchard 1.8 - 一意のフィールドでレコードを保存する
移行で、テーブルの列の 1 つを一意として定義しました。もちろん、この一意性制約に違反するレコードを保存しようとすると、例外が発生します。
対応する部分がないため、レコードを保存するために IRepository の Create メソッドと Update メソッドを使用しています。上記の例外を受け取った後、それをキャッチし、AddModelError を起動して保存手順を停止します。その後、オーチャードは別の例外を与えてくれます。
原因を正しく理解していれば、モデル エラーを追加しても、Orchard は自動的にレコードをデータベースにフラッシュしようとします。トランザクション スコープを変更しようとしましたが、うまくいきませんでした。この問題を解決する方法はありますか?
c# - 重複したアイテムが IRepository に追加されないようにするにはどうすればよいですか?
リポジトリにとのペアIRepository
を格納するために を使用しました。現在、重複するサブジェクト名がそのリポジトリに追加されないようにする方法を見つけようとしています。subject
score
ステートメントを使用して、リポジトリが既にcontains
サブジェクト名であるかどうかを確認する次のソリューションを試しました。
しかし、次のようなオーバーロードの不一致エラーが表示されます。
エラー 1 'System.Collections.ObjectModel.Collection<LC_Points.Model.ScoreModel>.Contains(LC_Points.Model.ScoreModel) に最適なオーバーロードされたメソッドの一致には、無効な引数がいくつかあります
と
エラー 2 引数 1: 'string' から 'LC_Points.Model.ScoreModel' に変換できません
ステートメントの引数を修正する方法を知っている人はいますか?
SubjectName
が文字列型であり、2 番目のエラーに従って引数として渡すことができないことがわかります。だから私は試しScoreModel.Subject
ましたが、それはコンパイラによって許可されていませんでした。アドバイスをいただければ幸いです。
これはScoreModel
参照用です: