問題タブ [data-access-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 - Visual Studio 2008でデザイナーを使用してdb2クエリのIN句にパラメータとしてコンマ区切りリストを渡す
厳密に型指定された DAL チュートリアルに基づいて、Visual Studio 2008 のデザイナーを使用して構築しているクエリに、コンマ区切りの値のリストをパラメーターとして渡したいと考えています。クエリは DB2 データベースに対して実行されます。これが私がやりたいことです:
select * from price where customer in(?)
123456 を ? として渡します。
しかし、'123456' を渡すと失敗します (これは char フィールドなので、これが機能しない理由はわかりません。これらを舞台裏で追加している必要があります)、または 123456、123457 または '123456'、'123457' です。
このページをポータルに追加します。すべてのデータ アクセスは、それを呼び出す BLL を使用して DAL デザイナー モデルに基づいて実行されるため、一貫性を保つためにこの方法で行いたいと考えました。これは可能ですか、それともツールが必要なことを達成するのに十分なほど柔軟性がないという状況ですか? ありがとう。
asp.net - ASP.netで現在推奨されているデータアクセス層はどれですか?
私は現在、発生した問題を書き留め、他の人が見ることができるようにそれらに答える小さなWebサイトを構築しています。現在、ここで説明されているようなDALを使用しています。現在、他のモデル、特にLinq2SQLとADO.netエントリフレームワークを使用したlinqベースのモデルを検討しています。たとえば、linqクエリを使用してトップリストを除外しているので、ある意味でデータアクセスをコードレイヤーに移動していることに気付きました。私がこれを始めた理由は、DALが常にDBと実際に同期していなかったためであり、DB内の何かを変更すると、null許容型がnull許容型ではなくなったためです。次に、テーブルをデータテーブルに再インポートすると、クエリが失われます。
私の簡単な質問は、今日ASP.netに適したDALが必要な場合、それは何でしょうか。提案、経験は大歓迎です。
c# - 階層化されたアーキテクチャから DB を更新する: 最善の方法は?
データを取得できる基本的な DAL と、この DAL を使用して複数のオブジェクトを含むビジネスレイヤーを構築しました。データをビジネス オブジェクトにマップし、何かを行ったら、データをデータベースに書き戻したいと考えています。一部のビジネス オブジェクトには多数のプロパティがあるため、ビジネス オブジェクトのすべての値をパラメータとして対応するデータ サービスのメソッドに渡すことはできません。
私が考えてきた他の方法:
ビジネス オブジェクトを対応するデータ サービスに渡し、そこですべての値をパラメータとして SP を実行します。-ビジネスオブジェクトをDALに渡す必要があり(分離に違反)、おそらく50を超えるパラメーターを持つSPになるため、最悪です
ビジネス オブジェクト内に空の (?) データセットを作成し、ビジネス オブジェクトからの値を入力し、そのデータセットをデータ サービスに渡し、dataadapter を介してデータベースを更新します。「... WHERE 0」-SQL 文字列を使用して空のデータセットを作成することを考えました。それは良い習慣でしょうか?
このようなことをするのはこれが初めてです。私には後者の方が良いように思えますが、他にもっと良いアプローチがあるのではないでしょうか? または、私が知らないいくつかの理由で最初のものの方が優れていますか?
どうもありがとうございました!
[編集:] C# Express を使用しているため、LinQ2SQL を使用できません (ローカル DB のクエリのみをサポートしていますが、私のものはリモート DB です)。
c# - ストアド プロシージャのエンタープライズ ライブラリ キャッシング パラメータ?
同僚とデータ アクセス コードを標準化しようとしています。前述の同僚の 1 人は、EntLib データ アクセス ブロックがストアド プロシージャ呼び出しのパラメーターをキャッシュしようとしていると主張しています。
リフレクターを調べたところ、それらがキャッシュされている可能性があるという証拠がいくつかあります。しかし、次のような状況ではそうではないと思います。
誰かがこれを確認または否定できますか?
私はEntLib 4.1を使用しています
asp.net - DAL から BLL に返すもの
現在、ユーザー インターフェイス (Web ページ) BLL (マネージャーとドメイン オブジェクト) DAL (各ドメイン オブジェクトの DataAccess クラス) で構成されるアプリケーションがあります。
UI で以下を使用して、ドメイン オブジェクトを検索します。
これが私のBLLです
最後に、これが私の DAL です
IBook オブジェクトを作成して Manager に返すにはどうすればよいでしょうか。BookDB から BookManager に DataTable を返し、Book オブジェクトを作成して返すようにしようと考えていますが、それは正しくないようです。これを行う別の方法はありますか?
編集:各レイヤーをプロジェクトに分離することにし、BLL への参照を追加しようとすると、DAL レイヤーで循環依存の問題が発生しました。DAL から Book クラスやインターフェイス、または BLL の何かにアクセスできません。ここで ado.net オブジェクトを使用し、管理者に ado.net オブジェクトから実際のオブジェクトを作成させる必要がありますか? これがそのレイアウト方法です
ありがとう!
c# - 環境変数をデータ アクセス レイヤーに渡す
私たちが作成するすべてのストアド プロシージャには、clientip、serverip、Windows ユーザー名などを渡す必要があります。
問題は、これらを効率的に DAL に渡す方法です。
c#-2.0 - データ アクセス、ビジネス ロジック、およびプレゼンテーションを分離するシンプルでエレガントなパターン
上記を行うには簡単なパターンが必要です。注意事項:
1)実際のデータの取得を行うクラスを使用する義務があり、DataTableを返します
2) 考えられるすべてのデータベース タイプをサポートする汎用インターフェイスには関心がありません。1 つのデータベース タイプに固執しています。
3) エラーをエレガントにトラップし、エラーが発生したことをユーザーに通知するにはどうすればよいですか。
4) MVC の学習を勧めないでください。現在、MVC はオプションではありません。
実際のパターンデザインに興味があります。
data-access-layer - ビジネスオブジェクトからのデータアクセス層の抽象化
データアクセスコードをビジネスオブジェクトから切り離すことは新しいことではありませんが、私は常に何かを達成するための「最良の方法」を探しています。
私は次のクラスを持っています:
オレンジ-これは私のビジネスオブジェクトです。
OrangeList-これはオレンジのリストです。
ユーザーは、OrangeList.Fetch(someCriteria)を呼び出して、データストアからOrangeオブジェクトをフェッチします。したがって、OrangeListにはデータアクセス層への参照が必要です。つまり、プロパティはIDataProviderMyDataProviderです。
これは私にとってはうまくいきますが、問題は、単一のOrangeを単独でフェッチできないことです。常にOrangeListを経由する必要があります。
そのいずれか、またはOrangeとOrangeListの両方は、DataProviderを保持するいくつかの共通オブジェクトから派生する必要があります。
これは問題ですか、それとも私のアプローチはそもそもマークから外れていますか?
ヒント/ポインタはありがたいです、ありがとう。
編集:以下の議論に照らして、私はリポジトリパターンをチェックアウトしました。
ただし、私のプロジェクトでは、リポジトリをDALからさらに分離することをお勧めします。
SO ....リポジトリは、私がオレンジを取得し、オレンジを保存する方法ですが、それでも方法がわかりません。私はそれをIDataProviderに委任します。これは、図にリストされているものの数である可能性があります。
明確にするために-オレンジはそれ自体をフェッチ/更新する方法を知りませんよね?それは純粋なビジネスオブジェクトです-そしてそれがポイントですか?
代替テキストhttp://img22.imageshack.us/img22/2460/repositorya.jpg
ご参考までに、私の「LegacyDataProvider」は、ファイルベースのデータベース(FoxPro、eek)にアクセスするOLDシステムをサポートすることですが、これでこれをまとめて、新しいコードから腕の長さに保つことができます。
.NETアセンブリの構築に関しては、循環参照を防ぐために、Repository.DLL [OrangeRepo]、DataProviderInterface.DLL [IDataProvider]、およびBusinessObjects.dll[Orange]があるように見えます。すべて良いですか?
その時、私はリポジトリのアイデアを思いついたのですか?
subsonic - SubSonic の展開と接続文字列の変更
Subsonic を使用して、Web アプリケーションの 1 つの DAL を構築しました。テスト サーバーから実稼働サーバーに移動すると、接続文字列が実稼働データ ソースを指すように変更されますが、アプリは引き続きテスト DB に対して実行されます。接続情報は、Web.config 以外の場所に保存されていますか?
Subsonic を使用して構築された Web アプリを展開するためのベスト プラクティスは何ですか?
ティア
ジョン