問題タブ [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.

0 投票する
5 に答える
460 参照

sql - SQL パラメータを処理する最良の方法は?

基本的に、ビジネスロジックから完全に分離されたデータベースレイヤーがあります。つまり、ビジネス データをデータベースにコミットする準備ができたら、すべてのビジネス プロパティをデータ メソッドのパラメーターに渡す必要があります。例えば:

Public Function Commit(foo as object) as Boolean

これは問題なく動作しますが、数十のパラメーターを使用するコミットや更新を行うと、大量の入力が必要になる場合があります。言うまでもなく、私のメソッドのうちの 2 つ (update と create) は、本質的に同じことを行うため、同じパラメーターを取ります。私が疑問に思っているのは、これらのパラメーターを渡すための最適な解決策は何であり、何かが変更されるたびに両方のメソッドでパラメーターを変更する必要がなく、入力を減らす必要がないということです:)私はいくつか考えました可能な解決策。1 つは、すべての SQL パラメーターをデータ クラスのクラス レベルに移動し、ビジネス レイヤーで設定したある種の配列にそれらを格納することです。どんな助けでも役に立ちます!

0 投票する
1 に答える
303 参照

parent-child - 親子関係でのデータアクセス層はどのように見えるべきですか?

私は最初のNHibernateアプリケーションを書いていますが、この質問はすべてのORMフレームワークに当てはまると思います。私のアプリケーションは単純なバグトラッカーであり(開発者はすべて問題のドメインを理解していますよね?)、DALでプロジェクトとチケットの関係をモデル化するのに最適な方法を考えています。AProjectには複数Ticketのsがあります。Ticketはによって所有されている必要がありますProject

私が見たすべての例は、、、、などを示していIRepository<T>ます。したがって、私は。を持っています。FindAllSaveDeleteinterface IProjectRepository : IRepository<Project>

私の質問は次のとおりです。ITicketRepositoryチケットについて話す方法を知っている、を持っていますか、それともこれIProjectRepositoryを知る必要があるものですか?

それとも私は間違った木を完全に吠えていますか?DALとの親子関係をモデル化したサンプルコードを誰かに教えてもらえますか?

0 投票する
6 に答える
2057 参照

.net - プロバイダーに依存しないDALを設計する方法

私は現在、クエリビルダーアプリケーションを開発しています。基本的には、SQLの知識がないユーザーがデータベースでさまざまなクエリ(結合、SELECT、INSERT、UPDATE、DELETE)を定義できるようにするシンプルなグラフィカルインターフェイスです。.NET3.5を使用します。私のアプリケーションは複数のデータベースをサポートする必要があり、MS-SQL Server、MySQL、およびOracleで動作する必要があるため、プロバイダーに依存しないDALの設計方法に関するヒントや関連する講義へのリンクをいただければ幸いです。

ユーザーは、データベースサーバー、現在のサーバー上のデータベースを選択し、接続クレデンシャルを提供し、さまざまなテーブルを選択し、クエリを定義し(一連のコンボボックスを使用して)、有効な場合は最後にクエリを実行します。もちろん、DALには、DBプロバイダーごとにメソッドが必要です。ファクトリパターンのラインで何かを考えています。

注:これは単純な学校のプロジェクトであるため、結果のクエリのセキュリティやパフォーマンスには関心がありません。

更新:さらに調査を行い、非常に貴重な情報を提供していただいた後、を使用することにしましDbProviderFactoryた。ORMは興味深いものですが、クエリアナライザー/ビルダーが必要なだけなので、ORMを使用する意味がわかりません。DbProviderFactoryですから、使い方と関連するクラスの詳細なチュートリアルを教えていただければ幸いです。

0 投票する
4 に答える
2388 参照

c# - さらに別のデータアクセス層(c#.net 2.0)

単純なORMレイヤーのsps/classes/interfacesなどを実行するためのさらに別のコードジェネレーターを作成していることに気付きました。今回はほとんどの内臓がSQLにあります。spsを呼び出したり結果を取得したりするための汎用C#DALを持っています(1時間ほどかかり、小さいです)。

今ではもっと簡単な方法があると確信していました...ありますか?

私はSQLに自信があり、能力があり、ストアドプロシージャなどを使用しています。SQLから身を隠すつもりはありません。オブジェクトの入力/永続化のコーディングから退屈な繰り返しを取り除くだけです。私は、テンプレート言語/複雑なアプリ、またはメガブロートウェアを生成する(または肥大化したMSライブラリに基づいて構築する)アプリを学ぶことに興味がありません。また、既存のデータベースから開始できる必要があります。

それはまだ自分でロールする場合ですか?本当に?

.Net 2.0(Winforms)

編集:それが本当に簡単/迅速に拾うことができるのであれば、私は完全に反テンプレートではありません。理想的には、ソリューションは小さく、無料で、他の開発者にとっては怖くないでしょう。

0 投票する
3 に答える
484 参照

asp.net - データ アクセス方法の選択に関するアドバイスが必要

大規模な従来の ASP データベース アプリケーションを ASP.Net に変換する計画の初期段階にあり、使用するデータ アクセス方法を選択するのに苦労しています。Linq To SQL、動的データ、厳密に型指定されたデータセット、エンタープライズ ライブラリ (データ アクセス アプリケーション ブロック)、および Entity Framework を少し試してみましたが、どれも「1 つ」として思い浮かびませんでした。選択肢が多すぎます - 私の頭は泳いでいます、選択を手伝ってください!

おそらく、私が変換しているアプリケーションの背景と優先順位を説明すると役立つでしょう...

  • バックエンドは Microsoft SQL Server (2005 以降) であり、私たちはそれにコミットしているため、別のデータベース プラットフォームのサポートについて心配する必要はありません。

  • データベースは非常に完成度が高く、大量のビジネス ロジックが含まれています。これは高度に正規化されており、ストアド プロシージャ、トリガー、およびビューを広範囲に使用します。同時に 2 つの車輪を再発明したくないので、データベースへの変更はできるだけ少なくしたいと考えています。そのため、データベースの癖に対処できるほど柔軟なデータ アクセス方法を選択する必要があります。

  • このアプリケーションには、多くのデータ入力フォームと広範な検索およびレポート機能があります (レポートは別の獣ですが、後で取り組みます)。

  • アプリケーションは、データベース構造の小さな変更に対応できる柔軟性を備えている必要があります。アプリケーション (およびデータベース) は、データベースに小さなカスタム変更が加えられた別のサイトにインストールされる場合があります。理想的には、アプリケーションがデータベースの拡張機能を識別し、適切に反応することができます。つまり、O/R マッピングをアプリケーションに格納する必要がある場合、アプリケーションとデータベースを新しいサイトにインストールするときに、それを交換 (または簡単に更新) できる必要があります。

  • 迅速なアプリケーション開発が重要です。データベースはすでに完成しており、ユーザー インターフェイスは既存のアプリケーションとほぼ同じになる予定なので、これをすぐに開始できるものを見つけたいと思っています。開発の時間を節約できるのであれば、絶対に最新かつ最高のテクノロジーを使用しないことを犠牲にしても構わないと思っています。言い換えれば、Entity Framework のようなものを使用するのに急な学習曲線がある場合、プロセスが高速化されるのであれば、厳密に型指定されたデータセットやカスタム DAL などを使用しても問題ありません。

  • 私は ASP.Net の初心者ですが、Classic ASP、T-SQL、および古い ADO (切断されたレコードセットなど) には精通しています。データ アクセス方法のいずれかが私のバックグラウンドを持つ人により適している場合は、その方向に傾く可能性があります。

あなたが提供できるアドバイスをありがとう!

0 投票する
6 に答える
754 参照

asp.net - .NET MVC か、単純な古い ASP.NET か?

私はここ数日 .NET について学ぶことに費やしてきましたが、その過程で私は悟りを開くというよりは少し混乱させられました。背景情報として、私は PHP (CakePHP を使用してアプリ全体をかなり簡単に作成したことさえあります) と Rails の知識を持っています。

ASP.NET を追求するべきか、ASP.NET MVC の学習に固執するべきか迷っています。ASP.NET のいくつかのチュートリアルを行っていたとき、基本はかなり単純に見えましたが、どういうわけか、私が行ったすべての例で、DAL を使用せずに SQL ステートメントを例に貼り付けていると、少し心配になります。

それで、私が良い調査をしていなかった場合に備えて、これに役立つ本/サイトはありますか? それとも、.NET MVC を学びに行くべきでしょうか?

なぜ私が PHP や Rails に固執しないのか不思議に思われているかもしれませんが、仕事を安全に行うために .NET について少し知っておく必要があるかもしれないことを知りました。

0 投票する
7 に答える
2878 参照

design-patterns - Web Tier が DAL に直接アクセスすることを許可しますか?

私は、ここで少しの現実を和らげた、知覚された「ベストプラクティス」に興味があります。

Web アプリケーションでは、Web 層が DAL に直接アクセスできるようにしますか? それとも、最初に BLL を経由する必要がありますか?

具体的には、「ビジネス ロジック」が実際には関与しないシナリオについて話しています。たとえば、単純なクエリのように、「姓が 'Atwood' のすべての顧客を取得する」などです。あらゆる種類のロジックが絶対に存在するシナリオは、BLL を通過するので、それをmooと呼びましょう。

このメソッドを BLL オブジェクト内にカプセル化することもできますが、多くの場合、署名が DLL オブジェクトの署名とまったく同じであり、クエリを DLL に委譲する 1 つのライナーと同じくらい単純なコードになる場合は、やや無意味に思えます。 .

BLL オブジェクトを使用する前者を選択した場合、これらのオブジェクトを何と呼びますか? (クエリ レイヤーを DLL に提供する以上のことはしないと仮定します)。ヘルパー?クエリプロバイダー?

考えてください。

よろしく

マーティ