【问题标题】:Q: How can I execute a query string in ASP.NET Core?问:如何在 ASP.NET Core 中执行查询字符串?
【发布时间】:2019-09-23 02:50:43
【问题描述】:

我正在学习 ASP.NET Core,并且正在使用 SQL Server 构建 Web API。

但是使用 LINQ 很困难,因为我只知道一点,不能使用复杂的查询。

这就是为什么我想像这样使用 SQL 查询

SELECT * 
FROM A 
WHERE A.ID = 1

如何在 ASP.NET Core 中使用它?

感谢您的帮助!

【问题讨论】:

标签: c# sql-server asp.net-core


【解决方案1】:

您可以在 asp.net core 中使用带有类似功能的 ADO

public static SqlDataReader ExecuteReader(SqlConnection conn, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
 {
 SqlCommand cmd = conn.CreateCommand();
 PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
 var rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
 return rdr;
 }

完整的例子可以找到here

【讨论】:

    【解决方案2】:

    您可以使用 FromSql 扩展方法开始基于原始 SQL 查询的 LINQ 查询。

    var blogs = context.Blogs
               .FromSql("SELECT * FROM Blogs")
               .Where(b => b.Id ==1)
               .FirstOrDefault();
    

    或者您也可以参数化用户输入以防止 SQL 注入攻击成功的可能性。

    var blogs= context.blogs.FromSql("SELECT * From Blogs Where Id = {0}", id).FirstOrDefault();
    

    SQL 命令可以是返回所有必需数据字段的任何有效 SQL 语句。可以通过 FromSql 方法调用存储过程。DbContext 公开了一个Database 属性,其中包括一个名为ExecuteSqlCommand 的方法。此方法返回一个整数,指定受传递给它的 SQL 语句影响的行数。有效的操作是 INSERT、UPDATE 和 DELETE。该方法不用于返回实体。

    更多详情,您可以参考以下链接:

    https://docs.microsoft.com/en-us/ef/core/querying/raw-sql

    https://www.learnentityframeworkcore.com/raw-sql

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 2017-04-15
      • 1970-01-01
      • 2017-05-25
      • 2011-02-22
      • 2021-05-13
      • 1970-01-01
      相关资源
      最近更新 更多