2

好的,这是我的 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”的操作不符合所需的签名。返回类型必须是实体或复杂类型、实体或复杂类型的集合或预定义的可序列化类型之一。

我究竟做错了什么?我不知道你为什么需要它,但这是我的服务操作:

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

4

1 回答 1

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

于 2012-05-02T14:34:13.100 回答