我的数据合同有什么问题?

时间:2012-05-01 20:55:20

标签: silverlight wcf-ria-services

好的,这是我的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,我总是遇到这样的奇怪问题。它几乎不值得使用它。

1 个答案:

答案 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服务是如此痛苦的限制。我知道这对你来说很有用,但它更多的是问题,而不是帮手。