在WCF服务中返回Dataview

时间:2010-03-04 11:28:59

标签: wcf web-services dataview

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

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

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

我收到错误“无法将类型'对象[]'隐式转换为'System.Data.DataView',我试过谷歌搜索但没有得到任何地方,任何帮助将不胜感激。

由于

1 个答案:

答案 0 :(得分:2)

你不能这样做 - 你不能也不应该从WCF服务永远返回类似DataView的东西。 WCF服务只返回数据 - 不是具有行为的对象(DataView包含很多行为 - 排序,过滤等)。

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

  • 使用SqlDataReader
  • 查询数据库
  • 将您真正需要的相关信息(只有您真正感兴趣的字段)解析为DTO(数据传输对象) - 基本上只是普通对象,除了对您来说很重要的“销售”属性之外什么都没有/ LI>
  • 从WCF服务返回一个列表

您可以使用Linq-to-SQL,NHibernate或任何其他功能强大的ORM来处理从数据库中的行/列到您的对象的转换,而不是自己执行步骤1和步骤2。