データアクセスレイヤーにexecutenonqueryメソッドがあります。 executenonqueryが失敗したときにビジネスロジックで例外を処理する必要があります。 BLLにElmah loggerを使用しています。 ExecuteNonQueryメソッドからの戻り値はありません、 はので、私はビジネスロジックでのsql例外の処理
BLLをスローされる例外のためにログインするためにBLLには何の条件を確認してください:
//コンストラクタ
public FormService(ISettings settings, ILogger logger, IFormDataServiceWorker formDataService)
: base(settings, logger)
{
this._formDataService = formDataService;
}
//method calling DAL
public string GetRefNo(FormData formData)
{
foreach (var formFieldData in formFieldDataList)
{
this._formDataService.SubmitFormData(formFieldData);
}
}
DALの実装:
public void SubmitFormData(FormFieldDTO formFieldData)
{
using (var sqlConn = new SqlConnection(Configuration.DBConnection))
{
sqlConn.Open();
using (var sqlcmd = new SqlCommand("usp_SubmissionDataInsert", sqlConn))
{
sqlcmd.CommandType = CommandType.StoredProcedure;
sqlcmd.Parameters.Add("@SubmissionId", SqlDbType.UniqueIdentifier).Value = formFieldData.SubmissionId;
sqlcmd.Parameters.Add("@FieldId", SqlDbType.SmallInt).Value = formFieldData.FieldId;
sqlcmd.Parameters.Add("@FieldTitle", SqlDbType.VarChar, 500).Value = formFieldData.FieldTitle;
sqlcmd.Parameters.Add("@FieldData", SqlDbType.VarChar, -1).Value = formFieldData.FieldValue;
sqlcmd.Parameters.Add("@FieldName", SqlDbType.VarChar, 200).Value = formFieldData.FieldName;
sqlcmd.ExecuteNonQuery();
}
}
}