【问题标题】:SubSonic How to Execute a SQL Statement?SubSonic 如何执行 SQL 语句?
【发布时间】:2010-07-01 20:45:40
【问题描述】:

我的网站在我的网站上使用 Subsonic 2.2。

我有 1 个奇怪的情况,我需要运行一些即席 SQL 语句。

public IList<string> GetDistincList(string TableName, string FieldName)
{
    string sqlToRun = string.Format("SELECT DISTINCT {0} FROM {1} ORDER BY {0}", FieldName, TableName);

    Query query = new Query(TableName);
    query.PleaseRunThis(sqlToRun);
    query.ExecuteReader();

}

有人可以帮我吗?看起来,我只想返回一个通用的字符串列表。

谢谢!

【问题讨论】:

    标签: subsonic subsonic2.2 adhoc-queries


    【解决方案1】:

    Subsonic 有一个很棒的方法,叫做 ExecuteTypedList(),所以你可以做一些这样的想法。

    List<int> result = DB.Select(Table.Columns.Id)
      .Distinct()
      .From<Table>()
      .OrderBy(Table.Columns.Id)
      .ExecuteTypedList<int>();
    

    甚至使用 pocos:

    public class UserResult
    {
        public int Id {get;set;}
        public string Name {get;set;}
    }
    
    
    List<UserResult> users = DB.Select(
           User.Columns.UserId + " as Id",     // the as ... is only needed if your
           User.Columns.UserName + " as Name"  // column name differs from the
       ).From<User>()                          // property name of your class
        .ExecuteTypedList<UserResult>();
    

    不幸的是,这种方法不适用于字符串,因为它需要 a) 值类型 b) 具有无参数构造函数的类,因为该方法使用反射将列从结果映射到类的属性

    但是我前段时间写了一个适用于字符串的扩展方法:

    Use the Subsonic.Select() ExecuteTypedList Method with String

    在链接中查看我自己的答案。

    如果您将扩展方法添加到您的代码中,您可以这样做:

     List<String> result = DB.Select(User.Columns.UserName)
                             .From<User>()
                             .ExecuteTypedList();       
    

    【讨论】:

      【解决方案2】:

      使用 CodingHorror 类。

      这是 SubSonic 3 的做法:http://www.subsonicproject.com/docs/CodingHorror

      SubSonic 2 方式类似:

      Dim ch As SubSonic.CodingHorror
      ch.Execute("delete from @tablename", table)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 2012-06-11
        • 2013-06-28
        相关资源
        最近更新 更多