問題タブ [bll]
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.
c# - ビジネスレイヤー(BLL)で設定ファイルを使用する
UIレイヤーに設定ファイルがあり、ビジネスレイヤーでその値を使用する必要があります。私のUIレイヤーとビジネスレイヤーは別々のアセンブリにあります。
ビジネスレイヤーの設定値に直接アクセスできないため、現在、ビジネスレイヤーコンストラクターを介して設定値を渡します。すべての設定ファイルの値を含むクラスを作成し、それをビジネスレイヤーコンストラクターに渡すことを検討しています。
これはこれらの値にアクセスするための最良の方法ですか、それとも別の方法がありますか?
c# - エンティティ DAL (データ アクセス層) を使用してカスタム ビジネス ロジックを ASP.NET Web サイトに追加する
エンティティ バージョン 4.0 DAL を持つ ASP.NET Web サイトがあります。データを入力できるテキストボックスと、そのデータを表示および編集するためのグリッドビューがあるページがいくつかあります。LINQ を使用して、いずれかのページのコード ビハインド ファイルに挿入ロジックを記述しています。ただし、このコードを複数の場所で使用し、1 つの場所だけを変更できるように、BLL (ビジネス ロジック レイヤー) を実装したいと考えています。とにかく、コードビハインドで特定のテーブルに対してこれらの BLL 関数を呼び出す必要があり、Visual Studio の GUI を使用してそれらを EntityDataSources にアタッチしたいと考えています。カスタム ロジックを記述するために別のクラス ファイルを作成できましたが、GUI を使用して別の更新、挿入、または機能を削除します。BLL の関数を間違ったプロパティで装飾していますか? 以下は、それを機能させるための私の試みです。
.net - 同じBLLとDALを共有する異なるUI
階層型UI、BLL、DALアーキテクチャを使用してシステムを作成しました。
ここで、同じデータベースを利用し、既存のシステムBLLおよびDALの最大50%を使用するWebサイトを作成する必要があります。
別のソリューションを作成して、BLLとDALを「コピーアンドペースト」したくないのは、変更が加えられると、両方のソリューション間で多くを複製する必要があるためです。
Webサイトに独自のBLLとDALを与え、コンパイルされたシステムDLLを参照して重複を削除することを検討しましたが、両方のソリューションが更新されることが多いため、これは実用的ではない可能性があります。
可能であれば、2つのプロジェクトを論理的に分離したいと思います。助言がありますか?
c# - BLL を使用する場合でも、DAL にアクセスする必要がありますか?
リポジトリ パターンを使用して n 層アーキテクチャを作成したいと考えています。BLLレイヤーを介してすべての呼び出しを複製し、BLLを介してデータのみの呼び出しにアクセスすることは理にかなっていますか? または、DAL を介して直接アクセスできるものと、BLL を介して直接アクセスできるものがありますか?
bll - BLLは絶対に必要ですか?
.Netの世界は初めてです。私はウェブサイトを作成しています。DALとプレゼンテーション層があります。先に述べたように、私は初心者であり、BLLを作成する方法がわかりません。それで、私は私の現在のアプローチがうまくいくかどうか疑問に思いましたか?問題は発生しますか?SQL Serverデータベースにクエリを実行し、テーブルを選択して更新するシンプルなアプリケーションです。これをよりよく理解するのを手伝ってください
c# - データアクセスロジックをビジネスレイヤーからデータアクセスレイヤーに移動します
データアクセス層(DAL)を備えたasp.netmvcアプリケーションを実行しています。データベースのCRUDコードの90%を実行した後、ビジネスレイヤーが必要かどうかを自問しました。
しかし、私はそこに何を置くべきですか?DALのすべてのCRUDメソッドは、たとえば1つのSQLテーブルでの単一の選択ではありません。ほとんどの場合、私は多くの結合+SQL集計関数を実行します。言うまでもなく、私はADO.NETを使用していますが、ストアドプロシージャ/トリガーは使用していません。
次に、そのようなメソッドがビジネスレイヤーに属するかどうかをもう一度自問しました。
このメソッドは、実際にはDAL内の他の2つのメソッドを呼び出しています。
ここで、AddTestplan + CreateTeststepsForTestplanの両方のメソッドからのすべてのコードを含むTestplanDataProviderクラス内にもCreateTestplanメソッドを配置できるのに、なぜ追加のビジネスレイヤーを導入するのかを自問しました。
どう思いますか?これは良いアプローチですか?
私の意見では、CreateTestplanメソッドにはデータアクセスロジックしか含まれていないので、これを本当に尋ねます。
更新:
asp.net - DALにデータが見つからない場合にBLLで例外をスローする方法
テキストボックスに入力したナンバープレート番号に対応するcarIDがない場合、BLLで例外をスローしようとしています。
私のDALは次のようになります。
そしてこれは私のBLLです:
したがって、この特定のナンバープレートにcarIDがない場合、DALで例外がスローされますが、DALではなくBLLでこの例外をスローするにはどうすればよいですか?
c# - このデータ アクセス レイヤー メソッドを SQL 接続オブジェクトでオーバーロードするにはどうすればよいですか
どちらのサービスも、IUnitDataProvider の AddChildrenUnit メソッドを使用します。
CreateTemplate メソッドは AddTemplate および「ルート ユニット ノードの作成」のトランザクションで実行する必要があるため、TemplateService はこのメソッドに既に開いている接続オブジェクトを渡す必要があります。
UnitService は接続オブジェクトを AddChildrenUnit メソッドに渡さないため、コードはコンパイルされません!!!
私の質問は次のとおりです。AddChildrenUnit メソッドを変更して sqlconnection パラメータを削除することはできません。そうしないと、CreateTemplate メソッドの AddChildrenUnit がコンパイルされなくなります。
では、今何ができるでしょうか?私が考えることができる唯一のことは、SqlConnection パラメーターを 1 回使用し、このパラメーターを使用しない 1 つのメソッドを使用して、AddChildrenUnit のオーバーロードされたバージョンです。
面倒だなぁ…
より良い解決策を知っていますか?
テンプレートサービス:
ユニットサービス:
ユニットデータプロバイダー:
asp.net - dataobjectmethod、asp.net BLL の 2 番目のパラメーターは何ですか
asp.netでデータアクセスのBLLを勉強しています。
1つだけ明確でないことは、isDefaultと呼ばれるブール変数であるDataObjectMethodの2番目のパラメーターは何ですか。
asp.net - このような状況でBLLとGridViewを正しく作成する方法
私はデータベースを設計しました。私の質問をよりよく示すために、それを単純化しました。
CONSULTANTIDはConsultantsTableのFKです、簡単ですよね?
コンサルタントと経費である2つのデータテーブルを含むデータセットを作成しました
コンサルタントIDによる経費の取得などの対応するクエリ
ただし、グリッドビューで表示したいのは次のとおりです。
コンサルタントIDではなく金額とコンサルタントの名前
(ExpenseId、Amount、ConsultantName)を使用してデータテーブルを返そうとすると、スキーマがベースデータテーブルEXPENSES(ExpenseId、Amount、ConsultantId)と一致しないため、エラーが発生します。
BLLから(ExpenseId、Amount、ConsultantName(not id))を取得するにはどうすればよいですか?
2つのテーブルを結合して別のデータテーブルを作成する必要がありますか?ASP.NETサイトでは、これはDALとBLLを作成するための好ましい方法ではないと述べているためです。
または、gridviewのBoundFieldにいくつかの変更を加えることも可能です(可能であれば、2つの異なるアダプターの出力をバインドする方法)。