A. Насколько мне известно, в Dapper нет «комбинированного» метода Query and Execute.
B. Однако, поскольку ваша хранимая процедура представляет собой черный ящик с входными и выходными параметрами, вы можете попробовать это: (псевдокод ниже, не тестировался)
var p = new DynamicParameters();
p.Add("@file_name", "fileOne");
p.Add("@file_details_pk", dbType: DbType.Guid, direction: ParameterDirection.Output);
cnn.Execute("dbo.AddToFileDetailsAndGetPrimaryKey", p, commandType: CommandType.StoredProcedure);
Guid b = p.Get<Guid>("@file_details_pk");
От:
https://github.com/perliedman/dapper-dot-net
(«хранимые процедуры»)
В целом:
Dapper создан для скорости.
Также. Dapper имеет ограниченную функциональность:
С
https://github.com/perliedman/dapper-dot-net
Dapper - это отдельный файл, который вы можете вставить в свой проект , который будет
расширить интерфейс IDbConnection.
Предоставляет 3 помощников:
См.
Сравнение QUERY и EXECUTE в Dapper
и
https://github.com/perliedman/dapper-dot-net/blob/master/Dapper%20NET40/SqlMapper.cs
PS ..........
Кажется, у вас есть небольшая ошибка в предложении "output" .....
Вы помещаете имя_файла в таблицу хранения, а не новое значение вновь вставленного PK.
-- 4. insert into FileDetails
INSERT INTO dbo.FileDetails
(
file_name
)
OUTPUT INSERTED.file_details_pk INTO @pk_holder
VALUES
(
@file_name /* << this looks wrong */
);