ストアドプロシージャによるDapper.netクエリの戻り値

c# dapper sql-server

質問

using Dapper.Netusing Dapper.Netてストアドプロシージャusing Dapper.Net呼び出し、戻り値を取得しようとしています。

p.Add("@INCIDENT_ID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

var retResults = con.Execute("usp_GetIncidentID", p, commandType:CommandType.StoredProcedure);

int IncidentID = p.Get<int>("INCIDENT_ID"); 

私はパラメータの方向と"@INCIDENT_ID"を使用して、いくつかの異なることを試しました。結果をステップ実行すると、適切な戻り値がretResults値にretResultsされていることがretResultsますが、以下のようにドキュメントに記載されている方法で値にアクセスすることはできません。

ストアドプロシージャDapperは完全に格納されたprocsをサポートしています:

var user = cnn.Query<User>("spGetUser", new {Id = 1}, 
    commandType: CommandType.StoredProcedure).First();}}}
If you want something more fancy, you can do:

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<int>("@b");
int c = p.Get<int>("@c");   

受け入れられた回答

あなたは以下のように値を読むことができます

var incidentId = retResults.ToList()[0].INCIDENT_ID; 

エキスパート回答

私は、あなたがパラメータの名前をどのように定義するかは、これが純粋に不一致である( 疑わしい )ことを疑う 。 try(削除済みの@注意してください):

p.Add("INCIDENT_ID", dbType: DbType.Int32, direction: ParameterDirection.ReturnValue);

var retResults = con.Execute("usp_GetIncidentID", p, commandType:CommandType.StoredProcedure);

int IncidentID = p.Get<int>("INCIDENT_ID"); 


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow