Вызов простой хранимой процедуры в EF core 3.1 - PullRequest
1 голос
/ 21 апреля 2020

У меня очень простая хранимая процедура:

CREATE PROCEDURE [dbo].[ClearIterations]
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON

    delete from iterations
END
GO

При вызове из EF она не вызывается. Я не получаю ошибок:

public void ClearIterations()
{
    this.Iterations.FromSqlRaw("ClearIterations").IgnoreQueryFilters();
}

Есть указатели? Я нашел пример выше в другом потоке здесь, где код выше является ответом. Кажется странным, я должен назвать это так.

1 Ответ

0 голосов
/ 22 апреля 2020

EF Core 3.x + предоставляет два необработанных SQL набора методов - FromSql и ExecuteSql, оба с версиями Raw / Interpolated и Async.

Первые являются используется для запросов . Они возвращают IQueryable<T>, разрешают составление запроса и, поскольку любой запрос LINQ не выполняется, пока не будет перечислен результат.

В то время как последний используется для немедленного выполнения произвольного SQL (DDL, DML, batch et * 1024) *.). Они являются EF Core эквивалентом ADO. NET ExecuteNonQuery и возвращают затронутые записи. Для получения результатов можно использовать параметры примитива вывода (или ввода / вывода).

Вкратце, ExecuteSql методы - это то, что вы ищете. В вашем примере ExecuteSqlRaw , например (при условии, что это метод в вашем производном классе DbContext):

public void ClearIterations()
{
    this.Database.ExecuteSqlRaw("ClearIterations");
}    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...