2012-03-26 6 views
6

Ich habe eine SQL-Funktion, die eine INT zurückgibt, wenn ich versuche, über Dapper aufrufen, bekomme ich immer keine Ergebnisse zurück.Kann Dapper Werte von einer SQL-Funktion zurückgeben?

ich es so nennen:

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

Does adrett SQL-Funktionen unterstützt?

Antwort

8

Dapper sollte es unterstützen. Sind Sie sicher, Ihre Funktion ist in der richtigen Datenbank?

Hier ist eine schnelle VB.NET-Beispiel.

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 

Und hier ist die Funktion, die ich auf der gleichen DB erstellt habe, die ich in meiner Verbindung verwende.

CREATE FUNCTION fx_SumTwoValues 
(@Val1 int, @Val2 int) 
RETURNS int 
AS 
BEGIN 
    RETURN (@[email protected]) 
END 
GO 
+1

Das Bit ich falsch mache rief 'functionname' und es hätte sein sollen' wählen dbo.functionname als columnname' – ilivewithian

0

Versuchen Sie folgendes:

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