好的,这是我的RIA服务数据合同:
public class ZipLocationDC
{
[Key]
public String ZipCode { get; set; }
[Editable(false)]
public double Latitude { get; set; }
[Editable(false)]
public double Longitude { get; set; }
}
我有数百个与此非常相似的其他实体(即只有基本类型属性的简单类)。由于某种原因,我得到以下例外:
名为'GetZipLocation'的操作不符合要求 签名。返回类型必须是实体或复杂类型,a 实体或复杂类型的集合,或预定义之一 可序列化的类型。
我做错了什么?我不知道你为什么需要它,但这是我的服务操作:
[Invoke]
public ZipLocationDC GetZipLocation(String a_strZipCode)
{
var zipCodes = from zipCode in ObjectContext.ZipCodes
where zipCode.Code == a_strZipCode
select zipCode;
if (!zipCodes.Any())
return null;
var dLatitude = zipCodes.Average(i => i.Latitude);
var dLongitude = zipCodes.Average(i => i.Longitude);
return new ZipLocationDC
{
ZipCode = a_strZipCode,
Latitude = dLatitude,
Longitude = dLongitude
};
}
我对RIA服务感到厌倦。我也直接使用WCF,但是对于RIA,我总是遇到这样的奇怪问题。它几乎不值得使用它。
答案 0 :(得分:2)
这太愚蠢了,为什么我要尽快转换到WCF。作为查询操作的结果,我必须包含我的数据协定(ZipLocationDC
)。我只是返回null。我将此代码添加到我的服务定义中。
/// <summary>
/// This method does nothing but expose ZipLocationDC as an read-only entity.
/// </summary>
/// <returns>Null.</returns>
[Query]
public IQueryable<ZipLocationDC> GetZipLocations()
{
return null;
}
RIA服务是如此痛苦的限制。我知道这对你来说很有用,但它更多的是问题,而不是帮手。