Служба получения домена RIA WCF вернула параметр «OUTPUT» - PullRequest
0 голосов
/ 06 октября 2011

В моем приложении MVVM Silverlight мне нужно вызвать функцию службы домена, чтобы получить как результат запроса sql, так и некоторые данные «OUTPUT» из хранимой процедуры.Я выясняю, как получить данные на стороне службы домена, но на клиенте я не знаю, как получить параметры 'OUTPUT' из функции, поскольку Silverlight является асинхронным вызовом.Следующее является моей функцией в службе домена, и мне нужно получить два возвращенных параметра OUTPUT из асинхронного вызова.

Спасибо за любую помощь.

CK

  [Invoke]
    public IEnumerable<sp_Inquiry_Result> GetResultAsync( string ID, 
                                                          out string sDescription, 
                                                          out float fvariance)
    {

        // Declare ObjectParameter object to store output param
        ObjectParameter WorkcenterDescription = new ObjectParameter("@Description", typeof(string));         
        ObjectParameter Variance = new ObjectParameter("@Variance", typeof(float));

        // Call stored procedure, passing in Object Parameter
        ObjectResult < sp_WorkcenterCostInquiry_Result > o = this.ObjectContext.sp_Inquiry(
            workcenterID, 
            Variance);

        // ObjectParameter will have output param value from stored proc
        sDescription = Convert.ToString(Description.Value);
        fvariance = (float)Convert.ToDouble(Variance.Value);

        return o.ToList().AsEnumerable();

    }

1 Ответ

1 голос
/ 06 октября 2011

RIA Services не поддерживают параметры out. Они не имеют никакого смысла для асинхронного вызова (любые результаты игнорируются за кулисами вызова службы).

Стандартный подход - создать объект результата, содержащий несколько свойств, и вернуть его вместо этого.

В вашем конкретном примере это был бы новый тип возвращаемого значения, включающий следующие свойства:

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