获取RIA WCF域服务返回'OUTPUT'参数

时间:2011-10-06 02:51:19

标签: silverlight wcf mvvm

在我的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 个答案:

答案 0 :(得分:1)

RIA Services不支持out参数。它们对异步调用没有任何意义(在服务调用的幕后忽略任何输出结果)。

标准方法是创建一个包含多个属性的结果对象,然后返回该属性。

在您的特定示例中,这将是包含这些属性的新返回类型:

  • sp_Inquiry_Result
  • sDescription
  • fvariance