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()」を使用しています。
ただし、これを行うと、「指定されたキャストは無効です」という結果になるようです。例外。