Вернуть значение Multiple Out и Return Image в C#, используя Dapper - PullRequest
0 голосов
/ 22 января 2020

Как вернуть изображение из хранимой процедуры с помощью Dapper в C#?

У меня есть хранимая процедура с множественными выходами и возвращаемым значением. Я хочу прочитать тип возврата в C#

PFB Код и Хранимая процедура. Пожалуйста, предложите мне, как решить эту проблему.

CREATE PROCEDURE procedure_Sessions
    @id nvarchar(80),  
    @IsLocked  bit OUTPUT,  
    @LockAge    int OUTPUT

AS  
    DECLARE @textptr AS varbinary(16)  
    DECLARE @length AS int  
    DECLARE @now AS datetime  
    SET @now = GETUTCDATE() 
-- Update Query Begins not complete Query example --

@textptr = CASE IsLocked  
            WHEN 0 THEN TEXTPTR(State)  
            ELSE NULL  
            END
        @length = CASE IsLocked  
            WHEN 0 THEN DATALENGTH(State)  
            ELSE NULL  
            END

-- Update Query Ends--

    IF @length IS NOT NULL BEGIN  
        READTEXT dbo.commons.State @textptr 0 @length  
    END  

    RETURN 0

C# Код:

DynamicParameters dp = new DynamicParameters();
dp.Add("@Id", Id);
dp.Add("@IsLocked", dbType: DbType.Boolean, direction: ParameterDirection.Output);
dp.Add("@LockAge", dbType: DbType.Int32, direction: ParameterDirection.Output);
dp.Add("ReturnValue", dbType: DbType.Object, direction: ParameterDirection.ReturnValue);

connection.Query<byte>("Exclusive", dp, commandType: CommandType.StoredProcedure);

isLocked = dp.Get<bool>("@IsLocked");
lockAge = dp.Get<int>("@LockAge");

var returnvalue = dp.Get<object>("ReturnValue");

Ответы [ 2 ]

0 голосов
/ 27 января 2020

https://www.learndapper.com/relationships

   public async Task<List<ResultClass>> Load()
   {
       try
       {
           var query = "SELECT * from procedure_Sessions";
           var result = await Db.QueryMultipleAsync(query).ConfigureAwait(false);
           return result.Read<ResultClass>().ToList();
       }
       catch (Exception exception)
       {
           Console.WriteLine();
           throw;
       }
    }
0 голосов
/ 22 января 2020

Вы можете определить класс с именем 'ResultClass' и включить поля процедур в качестве его свойств (вы можете использовать тип byte [] для поля изображения). Затем вы можете запросить все поля таблицы и поместить результат в экземпляр resultClass, как показано ниже:

var result = db.Query<ResultClass>("SELECT * from procedure_Sessions") ;
...