Страницы

Поиск по вопросам

среда, 10 июля 2019 г.

Использование функций/процедур определенных на сервере

Предположим имеется следующая скалярная функция хранящаяся в бд сервера:
CREATE FUNCTION dbo.spTest () RETURNS INT BEGIN DECLARE @result INT; SET @result = 1; RETURN @result; END GO
Как вызвать данную функцию с использованием entity frameworkа и получить результат?

Пробовал делать так:
var cmd = _context.Database.Connection.CreateCommand(); cmd.CommandText = "[dbo].[spTest]";
if (cmd.Connection.State != ConnectionState.Open) cmd.Connection.Open(); try { var result = cmd.ExecuteReader(); } catch (Exception) { throw; }
result не содержит значений. на основании этого примера
Так же нашел следующий совет
на основании которого попробовал сделать так:
var query = _context.Database .SqlQuery(typeof(int),"dbo.spTest").ToListAsync(); var downtime = (int)query.Result.Single();
на что получаю следующее исключение:
The data reader has more than one field. Multiple fields are not valid for EDM primitive or enumeration types.


Ответ

Нужно изменить cmd.CommandText
cmd.CommandText = "SELECT [dbo].[spTest] ()";
Если функция с параметрами:
cmd.CommandText = "SELECT [dbo].[spTest](@param)";

Комментариев нет:

Отправить комментарий