Q: Как я могу выполнить строку запроса в ASP.NET Core? - PullRequest
2 голосов
/ 05 мая 2019

Я изучаю ASP.NET Core и создаю веб-API с SQL Server.

Но с этим трудно использовать LINQ, потому что я просто немного знаю об этом и не могу использовать сложный запрос.

Вот почему я хочу использовать SQL-запрос для него, например

SELECT * 
FROM A 
WHERE A.ID = 1

Как я могу использовать его в ASP.NET Core?

Спасибо за помощь!

Ответы [ 2 ]

3 голосов
/ 05 мая 2019

Вы можете использовать ADO с такой функцией в ядре asp.net

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 голос
/ 07 мая 2019

Вы можете использовать метод расширения FromSql, чтобы начать запрос LINQ на основе необработанного запроса SQL.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...