C#SqlCommand命名约定

时间:2015-09-16 12:31:38

标签: c# sql asp.net coding-style naming-conventions

我对使用C#和ASP.NET相当陌生,我很好奇是否存在在SQL数据库上运行多个查询时命名SqlCommands的约定。例如,我创建了我的SqlConnection,我希望调用一个函数,两个存储过程,并创建一个常规的简单查询。目前,我正在使用:

SqlCommand function = new SqlCommand();
SqlCommand command = new SqlCommand();
SqlCommand proc1 = new SqlCommand();
SqlCommand proc2 = new SqlCommand();

对于这些不同的命令是否有更多可接受的命名约定,或者我应该使用单个命令,因为我在后面的代码块中使用CommandText和CommandType调用?

2 个答案:

答案 0 :(得分:5)

如果您在同一范围内有很多命令,则可以使用personCommandproductCommand等名称。从MSDN General Naming Conventions你可以:

  

选择易读的标识符名称。例如,一个属性   名为Horizo​​ntalAlignment的英文可读性比   AlignmentHorizo​​ntal。

     

赞成可读性而不是简洁。该物业   名称CanScrollHorizo​​ntally比ScrollableX更好(一个不起眼的   参考X轴)。

     

请勿使用下划线,连字符或任何内容   其他非字母数字字符。 X请勿使用匈牙利表示法。

     

使用与广泛使用的关键字冲突的标识符进行避免   编程语言。

详细了解C# Coding Conventions。在其他情况下,我更喜欢仅使用commandKeep It Simple,因为范围会告诉我。

另一个好的提示是,当您使用实现IDisposable界面的类型(例如SqlCommandSqlConnection)时,可以使用using() { }结构在此之后处置对象范围。样本:

public IEnumerable<Person> GetPersons()
{
    var result = new List<Person>();

    using (var connection = new SqlConnection("connection string"))
    {
       // I know it is a person command, because it is in a method for it.
       // Keep it simple!
       using (var command = new SqlCommand("select id, name from persons", connection))
       {
          using (var reader = command.ExecuteReader())
          { 
              while (reader.Read())
              {
                  result.Add(new Person() {
                     Id = (int) reader["id"];
                     Name = reader["name"] as string;                    
                  });
              }
          } // reader is disposed here
       } // command is disposed here
    } // connection is disposed here

    return result;
}

关于编码惯例还有很多。请参阅参考文献中的链接。

答案 1 :(得分:0)

一个好的,更具可读性的约定是表达命令将执行的操作。 如果您阅读 updateProductCommand queryCategoryCommand ,则每个人都会立即知道该命令的用途。 当您定位存储过程时,最好使用sproc名称作为命令前缀,如 sp_UpdateProductCommand