问:如何在 ASP.NET Core 中执行查询字符串?
Posted
技术标签:
【中文标题】问:如何在 ASP.NET Core 中执行查询字符串?【英文标题】:Q: How can I execute a query string in 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 中使用它?
感谢您的帮助!
【问题讨论】:
使用这个有用的链接:***.com/questions/53517493/… 如果您基于查询字符串参数构建 SQL 查询,请考虑SQL Injection 漏洞。 【参考方案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
【讨论】:
以上是关于问:如何在 ASP.NET Core 中执行查询字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 asp.net core 中编写一个高性能的 sql 查询应用程序?
如何让 ASP.NET Core 支持绑定查询字符串中的数组