Как я могу использовать IMultipleResults и вернуть выходные параметры из хранимой процедуры SQL? - PullRequest
1 голос
/ 30 июня 2011

У меня есть хранимая процедура SQL, к которой я обращаюсь с помощью Linq-To-SQL.Он возвращает несколько результирующих наборов, а также пару выходных параметров.Это работает, когда я запускаю процедуру как Запрос в SQL, но когда я пытаюсь получить к ней доступ из своего кода C #, она не хочет работать.Параметр 'UserHasAccessToOption' всегда возвращает значение false, хотя в хранимой процедуре ему присваивается только значение true.

Опять же, он возвращает и позволяет просматривать другие ResultSets, которые возвращаются хранимой процедурой, ноне возвращает ЛЮБЫХ выходных параметров SQL.

Вот мой код для доступа к хранимой процедуре и возврата объекта IMultipleResults:

    [FunctionAttribute(Name = "dbo.GetOption")]
    [ResultType(typeof(Option))]
    [ResultType(typeof(LoanPurpose))]
    [ResultType(typeof(LoanType))]
    [ResultType(typeof(User))]
    [ResultType(typeof(Client))]
    [ResultType(typeof(OrganizationFinancialItem))]
    public IMultipleResults GetOption(
        int? OptionID, 
        int UserID, 
        bool GetClients, 
        bool GetOtherOrganizationUsers, 
        bool GetLoanPurposes, 
        bool GetLoanTypes, 
        bool GetOrganizationFinancialItems,
        ref bool? UserHasAccessToOption)
    {
        using (profiler.Step("Call \"GetOption\" SProc"))
        {
            IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod()))
                , OptionID
                , UserID
                , GetClients
                , GetOtherOrganizationUsers
                , GetLoanPurposes
                , GetLoanTypes
                , GetOrganizationFinancialItems
                , UserHasAccessToOption);
            return (IMultipleResults)(result.ReturnValue);
        }
    }

Ответы [ 2 ]

1 голос
/ 30 июня 2011

Значения выходных параметров отправляются последними в потоке данных из базы данных, поэтому вы должны прочитать до конца последнего набора результатов, прежде чем сможете получить выходные параметры.

0 голосов
/ 02 июля 2011

Я рекомендую вам посмотреть раздел «Обработка нескольких форм результатов из SPROC» этой ценной статьи:

LINQ to SQL (часть 6 - получение данных с использованием хранимых процедур)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...