【问题标题】:Named parameters in asp.net mvc 5 SQL queryasp.net mvc 5 SQL查询中的命名参数
【发布时间】:2016-02-16 21:27:16
【问题描述】:

我有一个大的讨厌的 SQL 查询要在 asp.net mvc 5 中运行,它应该返回一个非 db-table 对象,并且需要参数化。

即。

context.Database.SqlQuery<MyObject>("select a, b from table where a = @par")

我可以将@par 的值作为参数传入

class MyObject {
  public a {get;set;}
  public b {get;set;}
}

无论出于何种原因,msdn 文档都假定除了最简单的查询之外不可能执行任何操作...https://msdn.microsoft.com/en-us/data/jj592907.aspx

【问题讨论】:

    标签: c# asp.net asp.net-mvc entity-framework orm


    【解决方案1】:

    给定:

    var myPar = 1;
    

    要使用参数,请尝试:

    context.Database.SqlQuery<MyObject>("select a, b from table where a = @par", new SqlParameter("par", myPar));
    

    或者:

    context.Database.SqlQuery<MyObject>("select a, b from table where a = {0}", myPar);
    

    【讨论】:

      【解决方案2】:

      我不喜欢使用 SQL 选择字符串来避免潜在的 SQL 注入攻击。您可以通过 Linq 语法做到这一点:

       context.Database.table
           .Where(x => x.a == myPar)
           .Select(x => new MyObject { a = x.a, b = x.b });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-27
        • 1970-01-01
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多