問題タブ [data-layer]
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-server-2008 - ストアド プロシージャの実行と結果の実体化をサポートする DAL ライブラリはどれですか
私は EF に慣れています。なぜなら、EF をよく理解してクエリを最適化する方法を知っている限り、通常は問題なく機能するからです。しかし。
大量のデータを扱うことがわかっている場合、何を選択しますか? そもそも EF を使用してアプリケーションを機能させたくないことはわかっています。高度に最適化されたストアド プロシージャを作成し、それらを呼び出して特定の非常に狭い結果を取得します (多くの結合があるため、とにかく特定のエンティティを返すだけではありません)。
どのDALテクノロジー/ライブラリを使用すればよいか、少し混乱していますか? SqlConnection/SqlCommand の方法を使用したくありません。あいまいなバグを隠す可能性が高いコードをさらに記述する必要があるためです。
バグ サーフェスをできるだけ小さくし、プロセスに対応できるテクノロジーを使用したいのですが、その逆ではありません...
次の可能性を与えるライブラリはありますか?
- 名前による単純な SP 実行の手段を提供する
- 返されたデータの自動マテリアライゼーションを提供するので、ラムダ関数を使用して特定のマテリアライザーを提供できますか?
お気に入り:
または、複数の結果セットなどを返すストアド プロシージャを呼び出すことさえできます。
基本的に、この最後のものは機能しません。これは、両方をバインドする方法を知らないためです...しかし、要点はわかります。
すべてを 1 つの質問にまとめると、ストアド プロシージャの実行とデータ マテリアライゼーション用に最適化された DAL ライブラリはありますか?
c# - 3 層アーキテクチャ
3 層アーキテクチャについていくつか質問があります。
- 3層アーキテクチャでアプリケーションを正しく実装する方法は?
- これらの層の間で通信する方法は?
- データ層は DBMS と完全に同じですか? (ストアド プロシージャを使用する場合や、オブジェクト リレーショナル マッピング フレームワークを使用する場合はどうでしょうか?)
あなたの答えを聞くのを楽しみにしています。ありがとう。
PS: 私が一般的な質問をしていることを理解しないでください。わかった ?大規模なアプリケーションを正しく設計する方法を尋ねています。最善の方法は何ですか?. 長い答えを期待していません。
.net - .NET アプリケーション データ層のアップグレード
私は非常に大規模なデータ ベースのアプリケーションを開発する会社で働いています。このアプリケーションは約 10 年前に最初に作成されたため、アップグレードが切実に必要です。私は、データ層のアップグレードを調査して実装するタスクを与えられました。
現時点では、すべてがオブジェクトに基づいている/拡張されているビジネス オブジェクトを持つシステムを使用していDataRow
ます。つまり、各オブジェクトは多かれ少なかれデータベース内の 1 つの行に関連しています。アプリケーションは現在オブジェクト指向ではありませんが、これにより多くの問題が発生するため、OO 方向に移行したいと考えています。
そこで、.NET `Entity Framework' の使用を開始し、.edmx ファイルを作成することを検討しています。アイデアは、すべての SQL データベース テーブルを .edmx デザイナーにドラッグして、関連するデータ オブジェクトを作成させるだけです。
(OO 開発者としての) 私の考えでは、新しいビジネス オブジェクトを手動で作成し、新しいデータ レイヤーのクエリから返された .edmx 生成データ オブジェクトからデータを入力することを計画していました。これにより、インターフェイスを使用してさまざまなレイヤーを簡単に分離できます。
問題は、上司が、100 ほどのビジネス オブジェクト クラスを書き直すのに十分な時間がないと言い、.edmx で生成されたデータ オブジェクトをアプリケーション全体で使用することを提案していることです。
私の頭の中のすべての考えは「いいえ...データレイヤーとシステム全体の間にそのような結合を作成しないでください」と言いますが、上司はこれを促進するオンラインの記事を見たと言います。
皆さんへの質問は次のとおりです: (1 と 2 への回答の正当な理由を記入してください)
これは実行可能な解決策ですか (短期的であっても)?
生成されたデータ オブジェクトから別のビジネス オブジェクトを作成するためのより良い/代替ソリューションはありますか?
手動でコピーして貼り付けるのではなく、生成されたデータ オブジェクトから別のビジネス オブジェクトを作成するためのより良い/簡単な方法はありますか?
これらの質問が主観的なものであることは承知していますが、できる限り具体的な情報を提供したので、この件に関してアドバイスをいただければ幸いです。
implementation - データ層内にプレゼンテーション層を実装する場合の欠点
データ層内にプレゼンテーション層を実装することの欠点は何ですか。たとえば、コードにコンパイルし(つまり、aspxもコンパイルされる完全コンパイルを意味します)、その後、いくつかの設計変更を行う必要がある場合は、更新する必要はありません。コンパイルされたライブラリ私はここで直接変更を加えることができます。
私が間違っている場合は私を訂正してください。
これが誰かが欠点として投稿したリンクです。
c# - 一般的なクエリ方法
私のC#アプリは、コードスペースを乱雑にする多くの定型文を使用して多くのクエリを実行することがわかりました。また、繰り返しを避けたいのですが、これを一般的に行うためのメソッドをどのように作成できるかわかりません。
ODPを使用してOracleデータベースにアクセスしています。データウェアハウスの担当者が主キーの指定を拒否しているため、Linqを使用できません。また、LinqのODPサポートは、そうですね...彼らはむしろプラットフォームを使用してもらいたいと考えています。
すべてのクエリが異なるタイプの異なる数を返すため、実際にはリストを返すことはできません。
しかし、実際にはもっと多くの用語とこのようなクエリがたくさんあります。私は15かそこらのクエリを言うでしょう-15かそこらのフィールドが返されるものもあります。
この定型文をどこにでもコピー/貼り付けすると、多くの問題が発生します。たとえば、コピー貼り付けのすべてを更新しないと、間違ったリーダーを閉じて(またはさらに悪いことに)データベースに別のクエリ文字列を送信します。
私はこのようなことをしたいと思っています:
そのため、ボイラープレートのほとんどがなくなります。
シンプルなものを探しています。
c# - データ層の ExecuteNonQuery 接続エラー
現在、このテスト用 Windows フォーム アプリケーションに問題があります。コンストラクターは、datagridview にデータを追加するために機能します。ただし、ボタンをクリックすると、SQL コマンドを実行するための何も追加できず、エラー ExecuteNonQuery: Connection プロパティが初期化されていません。以下は私のコードです。同様の問題に関する質問を見つけましたが、コード内の複数のポイントでデータベースを呼び出すことでこの問題に対処していません。
c# - 多層アプリケーションで解決するために例外の詳細をユーザーに表示する方法
サービスレイヤーに次のコードがあり、EFを使用してデータベースに新しいユーザーを追加します。
そして、これは次のメソッドを介してサービスレイヤーによって呼び出されます。
AddUserに到達する前に、特定のクライアントとサーバーの検証を行いますが、未処理の例外を処理する方法がわかりません。
たとえば、context.SaveChanges()がエラーをスローした場合、エラーの詳細をプレゼンテーション層に戻すにはどうすればよいですか?
私は次のようにAddUser内にtry/catchを配置することを考えています:
しかし、AddUserの戻りタイプはUserであり、例外が発生したときに何を返す必要があるのかわかりません。例外の詳細をUserResponseメソッドに返すことができれば、エラーの詳細を保持するためにそこにある応答オブジェクト内のいくつかのフィールドにデータを入力できますが、catchセクション内から何を返すかを確認してください。
データアクセス層、サービス層、プレゼンテーション層などの多層アプリケーションでキャッチして処理する必要のある例外を特定する方法を理解しようとしています。主に、例外の詳細をユーザーに表示する方法を理解しようとしています。解像度。
ありがとう
c# - 'Payment.GenLedDet'は、保護レベルが原因でアクセスできません
私のクラスGenLedDetは内部に存在しますPayment namespace
これはデータレイヤーの私のコードスニペットであり、このコードが使用されています。そのようなエラーが表示されていない別の関数があるので、なぜこのエラーが発生するのかわかりません
asp.net - HTTPリクエストごとのDbContextですが、データレイヤーのHttpContextへの依存を避けてください
階層化されたアプリケーションでDbContext
perの1つのインスタンスをどのように使用できるかを考えてきました。HttpRequest
私が思いついた解決策の1つは、イベントハンドラーHttpModule
でコンテキストのインスタンスを初期化し、それをイベントハンドラーで破棄するを作成することです。HttpContext.Current.Items
BeginRequest
EndRequest
ただし、上記のアプローチには問題があります。保存されたDbContext
インスタンスを取得するには、データ層とビジネス層でSystem.Webを参照する必要があります。これはおそらく大丈夫ですが、私はそのルートに行くのを避けたいと思います。Web以外のアプリケーションからデータ層とビジネス層を参照して使用したい場合はどうなりますか?
何か案は?
c# - データレイヤーのファイルへのシリアル化
レガシーアプリケーションを更新しようとしていますが、データレベルを整理する方法についてアドバイスが必要です。
現在、すべてのデータは、バイナリシリアル化を使用して作成されたバイナリファイルに保存されています。保存されるデータは、いくつかのレベルの深いツリー構造です。
保存されたデータのオブジェクトレベル:
このすべてのクラスには、さまざまなことを行うための多くのロジックがあります。また、ファイルに保存してはならないステータス情報もあります。
データはプログラムの実行中に常に更新され、「ビジネスロジック」によってバイナリファイルに更新されると保存されます。
プログラムを更新しようとしていますが、このための単体テストを行うのは悪夢です。
データをファイルに保存したいのですが。しかし、そうでなければ、私はこれを改善する方法の提案を受け入れています。
編集:
プログラムは非常に小さく、大きくて複雑なフレームワークに依存したくありません。ヘルプが必要な理由は、実質的にアプリケーションロジック全体が1つの巨大なメソッドに含まれているコードをクリーンアップしようとするためです。