7

これは、Dapperの例から直接切り取ったコードです。

var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue); 
cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure);
int b = p.Get("@b");
int c = p.Get("@c");

誰でも:上記の例のコードでは、「。Executeを解決できません」というエラーが表示されます。これは。を参照していcnn.Executeます。接続オブジェクトを確認しましたが、Executeのメソッドがありません。Dapperは明らかにうまく機能するので、何が間違っているのでしょうか。

4

2 に答える 2

9

これで問題が解決すると思います:

using( var connection = new SqlConnection( connectionString ) )
{
    try
    {
        var p = new DynamicParameters();
        p.Add( "a", 11 );
        p.Add( "b", dbType: DbType.Int32, direction: ParameterDirection.Output );
        p.Add( "c", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue );
        connection.Open();
        connection.Execute( "MyDamnStoredProc", p, commandType: CommandType.StoredProcedure );
        int b = p.Get<int>( "b" );
        int c = p.Get<int>( "c" );
    }
    catch( Exception ex )
    {
        Console.WriteLine( ex.Message );
    }
}

:

  1. パラメータに @ 記号は必要ありません。dapper がそれを処理します。
  2. 必ず名前付きパラメーターを使用してください。パラメータを指定する更新された connection.Execute メソッドを参照してcommandType:ください。これを行うのは、オプションのパラメーターをメソッド呼び出しから省略できるようにするためです。
于 2012-09-21T16:11:26.483 に答える
7

「.Execute を解決できません」

using Dapper;それは、ファイルの先頭にある拡張メソッドが欠落していることが原因です。

参照: http://msdn.microsoft.com/en-us/library/bb308966.aspx#csharp3.0overview_topic3

于 2012-09-24T10:05:46.547 に答える