如何在ASP.NET Core中执行查询字符串?

3

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

但是由于我只了解一些有关LINQ的知识,因此很难使用它,并且无法使用复杂的查询。

这就是为什么我想要像以下这样使用SQL查询进行操作:

SELECT * 
FROM A 
WHERE A.ID = 1

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

感谢您的帮助!


4
请使用这个链接,它很有用:https://dev59.com/57Dla4cB1Zd3GeqP3B2r - hassan.ef
如果您根据查询字符串参数构建SQL查询,请注意SQL注入漏洞。 - vladimir
2个回答

3
您可以在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;
 }

完整示例可在此处找到。

1
你可以使用 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://learn.microsoft.com/en-us/ef/core/querying/raw-sql

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接