0

我的 Web 服务中有一个方法,它返回一个 DataView,

我已经设置了一个与此服务对话的代理,但是当我在代理中使用此方法时

public DataView GetSales(DateTime SalesDate)
{
    ServiceClient client = new ServiceClient();
    return client.GetSalesForDay(SalesDate);             
}

我收到错误“无法将类型'object []'隐式转换为'System.Data.DataView',我已经尝试使用谷歌搜索但没有得到任何帮助,我们将不胜感激。

谢谢

4

1 回答 1

2

你不能这样做——你不能也不应该从 WCF 服务返回像 DataView 这样的东西。WCF 服务只会返回数据——而不是具有行为的对象(DataView 包含很多行为——排序、过滤等)。

相反,在您的服务代码中,执行以下操作:

  • 使用 SqlDataReader 查询数据库
  • 将您真正需要的相关信息(只有您真正感兴趣的那些字段)解析为 DTO(数据传输对象) - 基本上只是简单的对象,只包含对您很重要的“销售”属性
  • 从您的 WCF 服务返回一个列表

除了自己执行步骤 1 和 2,您还可以使用 Linq-to-SQL、NHibernate 或任何其他有能力的 ORM 来为您处理从数据库中的行/列到对象的转换。

于 2010-03-04T11:44:13.800 回答