2

OK、これは私の 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 に答える