WCF返回类型是对象

时间:2012-08-31 13:49:03

标签: wcf entity-framework-4

我有一个WCF方法:

public IQueryable<AmenitySummary> GetAmenities(string searchTerm)

现在,AmenitySummary被定义为

[DataContract]
public class AmenitySummary
{
    [DataMember]
    public int AmenityId { get; set; }
    [DataMember]
    public string Amenity { get; set; }
    [DataMember]
    public string LowerCaseAmenity { get; set; }
}

在我的客户端解决方案中,我有一个项目,我称之为此方法。问题是Reference.cs文件中的签名是这个

public object GetAmenities(string searchTerm) {
   return base.Channel.GetAmenities(searchTerm);
}

怎么来的?为什么不是返回类型IQueryable<AmenitySummary>?我错过了什么?

不仅如此,当我尝试在客户端使用AmenitySummary时,由于无法识别,我无法执行此操作。我认为这是相互关联的。

谢谢,

取值

2 个答案:

答案 0 :(得分:1)

我认为这是因为IQueryable。您可能也需要公开它。

看这篇文章: Expose IQueryable Over WCF Service

答案 1 :(得分:1)

如果没有特定的引用,IQueryable不可序列化(请参阅svcutil.exe / references)。

否则使用WCF DataService(OData)或从服务返回AmenitySummary数组。在后一种情况下,您可以将数组转换为IQuaryable实例。