5

DynamicParameter の ReturnValue オプションを使用して、SCOPE_IDENTITY を使用して長い主キーを c# に戻そうとしています。

Dapper Web サイトのサンプル コードを次に示します。

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");

int を返す代わりに、主キー フィールドを bigint にする必要があるため、次のようにすることをお勧めします。

var p = new DynamicParameters();
p.Add("@a", 11);
p.Add("@b", dbType: DbType.Int32, direction: ParameterDirection.Output);
p.Add("@c", dbType: DbType.Int64, direction: ParameterDirection.ReturnValue);

cnn.Execute("spMagicProc", p, commandType: commandType.StoredProcedure); 

int b = p.Get<int>("@b");
int c = p.Get<long>("@c");

私のプロシージャでは、「RETURN SCOPE_IDENTITY()」を使用しています。

ただし、これを行うと、「指定されたキャストは無効です」という結果になるようです。例外。

4

2 に答える 2