3層のWebFormsアプリケーションが引き渡されています。私たちは、DALを変更する必要はありません、私はSqlParamaterのリストを受け入れる方法を変更しようとしているASP.Net WebForms - CodeBehindのList of SqlParamaterを読み込むことはできますか?
public Person GetPerson(int? personId, string personName = null)
{
SqlCommand command = new SqlCommand();
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Clear();
command.CommandText = "usp_GetPerson";
command.Parameters.Add("@PersonId", SqlDbType.NVarChar).Value = personId ?? (object)DBNull.Value;
command.Parameters.Add("@PersonName", SqlDbType.NVarChar).Value = personName ?? (object)DBNull.Value;
// run SqlCommand
}
オブジェクト:
は、我々のような強く型付けされたパラメータを受け入れDALのメソッドを持っています私たちのaspxページからデータベースに渡される多くのデータを変更/追加/削除する要求が定期的に出されています。これは私が実装したいものです。
public Persons GetPerson(List<SqlParameter> sqlParameterList = null)
{
// initialize SqlCommand object and properties
if (sqlParameterList != null)
{
command.Parameters.AddRange(sqlParameterList.ToArray());
}
// run SqlCommand
}
をほとんどDALを残すSqlParamaterオブジェクトの動的リストを受け入れるなどを行うと、我々は唯一のストアドプロシージャを更新する必要がありますし、分離コードは、パラメータの変更がなければなりません我々は受け入れる必要があります。これは、aspxページのCodeBehindにSqlParamaterリストを設定する必要があることを意味します。これをBLLで行う必要がありますか?
n-tierアーキテクチャのさまざまなレイヤーを理解していないので、どのプロセスにどこに配置する必要があるのか分かりません。現在のところ、BLLはビジネスロジックなしでCodeBehindとDAL間のリンクとしてのみ機能します。
これを実装するより良い方法があれば、私は提案にも公開しています。
のためにする必要がありますあなたのビジネスレイヤ私の入力。データレイヤーがビジネスレイヤーとプレゼンテーションレイヤーから独立している理由の一部を覚えておいてください。あなたの考えでは、今やデータ層の消費者はストアドプロシージャのパラメータを知る必要があります。これは**理想ではない** –