Как мне упростить этот подробный код базы данных ADO.NET - PullRequest
0 голосов
/ 22 января 2019

Тривиальный вопрос - я неопытен с C#.

У меня есть следующий код для вызова многопараметрической хранимой процедуры SQL-Server.Это работает, и это хорошо и ясно, то есть легко прочитать, что происходит, но это очень многословно.

Есть ли стандартная более короткая версия следующего?

using(var conn = new SqlConnection(this.connString))
using(var comm = new SqlCommand(DatabaseLayer.procSendEmail,conn))
{
  comm.CommandType = CommandType.StoredProcedure;

  SqlParameter pmIsTemplate = new SqlParameter("@IsTemplate",SqlDbType.TinyInt);
  SqlParameter pmDateInsertKey = new SqlParameter("@DateInsertKey",SqlDbType.Int);
  SqlParameter pmEmailTO = new SqlParameter("@EmailTO",SqlDbType.NVarChar,1000);
  SqlParameter pmEmailBody = new SqlParameter("@EmailBody",SqlDbType.NVarChar,-1);
  SqlParameter pmEmailImportance = new SqlParameter("@EmailImportance",SqlDbType.TinyInt);
  SqlParameter pmEmailSubject = new SqlParameter("@EmailSubject",SqlDbType.NVarChar,1000);
  SqlParameter pmSuccess = new SqlParameter("@Success",SqlDbType.Bit);

  pmIsTemplate.Direction        = ParameterDirection.Input;
  pmDateInsertKey.Direction     = ParameterDirection.Input;
  pmEmailTO.Direction           = ParameterDirection.Input;
  pmEmailBody.Direction         = ParameterDirection.Input;
  pmEmailImportance.Direction   = ParameterDirection.Input;
  pmEmailSubject.Direction      = ParameterDirection.Input;
  pmSuccess.Direction           = ParameterDirection.Output;

  comm.Parameters.Add(pmIsTemplate);
  comm.Parameters.Add(pmDateInsertKey);
  comm.Parameters.Add(pmEmailTO);
  comm.Parameters.Add(pmEmailBody);
  comm.Parameters.Add(pmEmailImportance);
  comm.Parameters.Add(pmEmailSubject);
  comm.Parameters.Add(pmSuccess);

  ...
  ...

1 Ответ

0 голосов
/ 28 января 2019

Может делать что-то вроде этого:

using (var conn = new SqlConnection(this.connString))
{
    using (var comm = new SqlCommand(DatabaseLayer.procSendEmail, conn) { CommandType = CommandType.StoredProcedure })
    {
        comm.Parameters.Add(new SqlParameter("@IsTemplate", SqlDbType.TinyInt));
        comm.Parameters.Add(new SqlParameter("@DateInsertKey", SqlDbType.Int));
        comm.Parameters.Add(new SqlParameter("@EmailTO", SqlDbType.NVarChar, 1000));
        comm.Parameters.Add(new SqlParameter("@EmailBody", SqlDbType.NVarChar, -1));
        comm.Parameters.Add(new SqlParameter("@EmailImportance", SqlDbType.TinyInt));
        comm.Parameters.Add(new SqlParameter("@EmailSubject", SqlDbType.NVarChar, 1000));
        comm.Parameters.Add(new SqlParameter("@Success", SqlDbType.Bit) { Direction = ParameterDirection.Output });
    }
}
...