2012-05-01 1 views
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 Services. Я также использую прямо вверх WCF, но с RIA у меня возникают странные проблемы, подобные этому все время. Его почти не стоит использовать.

+0

RIA voodoo тоже меня заводит. – granadaCoder

ответ

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 настолько болезненно ограничены. Я знаю, что для вас это хорошо, но это скорее проблема, чем помощник.

+0

Gaaaaaaaaaaaaaaaaaaaaaaaaaaa !! Я просто ударил это сегодня. Я ненавижу RiaServices. Спасибо, что ответили. – granadaCoder

+0

Я рекомендую WCF. Он не держит вас за руку, но вы также не получаете никого из этих немых сюрпризов. – Jordan

+0

Я занимаюсь WCF с 2005 года. «Именно!» (к вашим чувствам). Я скептически отношусь ко всем Microsoft Auto-Magic-Voodoo. На этот раз это Ria Services – granadaCoder