Po prostu szybkie pytanie, czy nie jest to obsługiwane w uniwersalnej bibliotece klas Win 8.1? A jeśli tak, czy ktoś może pomóc w tym, co robię źle.Rozszerzenie OData kończy się niepowodzeniem w aplikacji klienta Win8.1 Universal
http://jbsapplication.azurewebsites.net/Modules?$filter=Name%20eq%20'JBS%20Electronic%20forms'&$expand=Menus
Kiedy robię to z przeglądarki lub Skrzypka, otrzymuję poprawną odpowiedź.
Mój kod w klasie klient widok modelu jest następująca (przy użyciu OData Client kod v2 generowane obiektów)
var application = new UriBuilder(ServiceBaseAddress);
var context = new Models.Application(application.Uri);
var modulesQuery = context.Modules.Expand(m=>m.Menus).Where(m => m.Name == ApplicationName);
var modules = await ((DataServiceQuery<Module>) modulesQuery).ExecuteAsync();
_currentModule = modules.FirstOrDefault();
następujący wyjątek jest generowany na ostatniej linii
Pierwsza szansa wyjątkiem wpisz "Microsoft.OData.Core.ODataException" wystąpił w Microsoft.OData.Core.DLL
Informacje dodatkowe: Podczas wpisywania odpowiedzi JSON należy określić model użytkownika, a zestaw jednostek i typ jednostki muszą zostać przekazane do ODataMessag Metoda eWriter.CreateODataEntryWriter lub ODataFeedAndEntrySerializationInfo musi być ustawiona na ODataEntry lub ODataFeed, która jest zapisywana.
Jeśli usunę część Expand żądania, wszystko będzie dobrze, ale muszę wykonać kolejną podróż w obie strony, aby uzyskać menu.
ściętego odniesienie dla klasy modułu:
[Key("Id")]
public class Module: BindableBase
{
public string Name
{
get { return _name; }
set { SetProperty(ref _name, value); }
}
DataServiceCollection<Menu> _menus = new DataServiceCollection<Menu>(null,TrackingMode.AutoChangeTracking);
public DataServiceCollection<Menu> Menus
{
get { return _menus; }
set
{
_menus = value;
OnPropertyChanged("Menus");
}
}
}
Zauważyłem, że klient JavaScript może rozwinąć kwerendę grzywny bez rozwijanej encji w ODataModelBuilder; Z drugiej strony klient .NET wymagał dodania encji rozwijanej do ODataModelBuilder. – Bvrce
@ Bvrce domyślam się, że ma to sens - np. Różnice w silnym lub słabym pisaniu w JS vs C# .net – MemeDeveloper