asp.net mvc 5 SQL 查询中的命名参数

本文关键字:参数 查询 net mvc SQL asp | 更新日期: 2023-09-27 18:34:57

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

即。

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

asp.net mvc 5 SQL 查询中的命名参数

给定:

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);

我不喜欢使用SQL选择字符串来避免潜在的SQL注入攻击。您可以通过 Linq 语法执行此操作:

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