Может ли Dapper возвращать значения из функции SQL?

У меня есть функция SQL, которая возвращает INT, когда я пытаюсь называть ее через dapper, я всегда получаю никаких результатов.

Я называю это следующим образом:

var result = _connection.Query<int>("functionname", new {Parm = 123}, commandType: CommandType.StoredProcedure);
</int>

Поддерживает ли sql-функции поддержку?

2 ответа

Dapper должен его поддерживать. Вы уверены, что ваша функция находится в правильной базе данных?

Вот пример быстрого VB.NET.

Using conn = IDbConnectionFactory.CreateFromProvider("System.Data.SqlClient", CONNECTION_STRING)
 Dim sqlCommand As String = "SELECT dbo.fx_SumTwoValues(@valueOne,@valueTwo) As SumOfTwoValues"
 conn.Open()
 Dim result = (conn.Query(Of Integer)(sqlCommand, New With {.valueOne = 1, .valueTwo = 2})).First()
 Console.WriteLine(result.ToString)
 End Using

И вот функция, которую я создал на том же db, который я использую в моей связи.

CREATE FUNCTION fx_SumTwoValues
( @Val1 int, @Val2 int )
RETURNS int
AS
BEGIN
 RETURN (@Val1+@Val2)
END
GO


Попробуйте следующее:

result = _connection.Query<dynamic>("SELECT dbo.functionName(" + fnParam + ")", commandType: CommandType.Text);
</dynamic>

licensed under cc by-sa 3.0 with attribution.