2012-03-26 6 views
6

私はINTを返すSQL関数を持っています。私がdapperを使って呼び出しようとすると、結果は返されません。DapperはSQL関数から値を返すことができますか?

私はこのようにそれを呼んでいる:

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

は、DapperのサポートSQL機能していますか?

答えて

8

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 

ここに私が私の接続で使用しているのと同じデータベースで作成した機能があります。

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

を – ilivewithian

0

このお試しください:私が間違ってやっていたビットが `functionname`を呼んでいたし、それがcolumnname`としてdbo.functionname選択し`されている必要があります

result = _connection.Query<dynamic>("SELECT dbo.functionName(" + fnParam + ")", commandType: CommandType.Text); 
関連する問題