在C#中存储长SQL字符串的更好方法

Joe*_*der 5 c# sql

我已经搜索了一段时间,但没有找到任何东西.

我正在存储一些非常长的SQL选择字符串(像这样的较短的一个:​​)

      string mySelectQuery = "select distribution_stop_information.unique_id_no as stop_unique_id_no,distribution_line_items.unique_id_no as line_unique_id_no, stop_name, stop_address,route_code AS RouteCode, customer_reference," +
            "distribution_line_items.datetime_created, rma_number from distribution_stop_information join distribution_line_items on " +
            "distribution_line_items.unique_id_no = distribution_stop_information.unique_id_no " +
            "where distribution_line_items.datetime_created > '2/22/2017' and customer_no = '91000'";
Run Code Online (Sandbox Code Playgroud)

然后传递给他们

var Ourstops = (List<stop_data>)db.Query<stop_data>(mySelectQuery);
Run Code Online (Sandbox Code Playgroud)

这很麻烦,并且难以读取/调试代码.

有什么更好的方法呢?

只是一个苛刻的点 - 在这个项目上我不允许创建任何sprocs.严格来说,查询只使用类型,并使用postgresql(不是那里那么重要)

tra*_*.js 12

这是我首选的格式,只有一个人的意见:

string mySelectQuery = @"
    select 
        distribution_stop_information.unique_id_no as stop_unique_id_no
        ,distribution_line_items.unique_id_no as line_unique_id_no, stop_name
        ,stop_address,route_code AS RouteCode, customer_reference
        ,distribution_line_items.datetime_created, rma_number 
    from 
        distribution_stop_information 
        join distribution_line_items on distribution_line_items.unique_id_no = distribution_stop_information.unique_id_no
    where 
        distribution_line_items.datetime_created > '2/22/2017' and customer_no = '91000'
";
Run Code Online (Sandbox Code Playgroud)

优点

  • 复制并粘贴到sql management studio中
  • 使用@(逐字文字)消除了所有引号和连接
  • 也很容易使用$进行字符串插值
  • 前面的逗号使评论线更容易

但要注意SQL注入并尽可能多地使用参数 - 这几乎总是如此.(根据评论编辑)

  • 只使用选项卡,选项卡选项卡,有时使用选项卡选项卡选项卡:-) (2认同)