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

时间:2019-05-05 04:10:04

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

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

但是使用LINQ却很困难,因为我对此只有一点了解,并且不能使用复杂的查询。

这就是为什么我要像

那样使用SQL查询
SELECT * 
FROM A 
WHERE A.ID = 1

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

您可以在asp.net核心中将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

答案 1 :(得分: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://docs.microsoft.com/en-us/ef/core/querying/raw-sql

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