2017-10-17 8 views
2

J'ai écrit le code suivant pour interroger le point de terminaison ODATA dans Dynamics Nav 2016. Je l'ai fait en créant un ODATA connected service. J'ai passé le nom d'une entreprise dans l'URL:Est-il possible d'interroger toutes les entreprises via ODATA dans Dynamics Nav 2016

var navision = new Navision(
    new Uri("http://navision:7048/navision/OData/Company('Company1')")); 

foreach (var foo in await navision.Foo.ExecuteAsync()) 
{ 
    Console.WriteLine(foo.Name); 
} 

Est-il possible d'interroger toutes les entreprises dans Navision? Quand je laisse de côté la section /Company(...) de l'URL, je reçois une erreur:

DataServiceClientException: Cannot process the request because the default Microsoft Dynamics NAV company cannot be found. You can specify a default company in the service configuration file, or specify one for each tenant, or you can add a query string in the form of "company=[name]". You can see the available companies by accessing the default OData web service, Company. For more information, see "OData Web Services" in Help.

+0

Non. Différentes entreprises signifie différentes tables. Nav ne se joindra pas à vous. –

+0

Mettez cela comme une réponse @MakSim, :) –

+0

S'il vous plaît examiner le [Service système] (https://msdn.microsoft.com/en-us/library/dd355012 (v = nav.90) .aspx) pour y parvenir . C'est un service SOAP, mais je ne sais pas s'il existe un équivalent pour OData? –

Répondre

1

Différentes entreprises signifie tables physiquement différentes sur SQL avec des noms tels que [dbo].[CompanyName$TableName]. Nav ne se joindra pas à vous. Si vous utilisez des locataires, les tables seront même dans des bases de données distinctes par locataire.

Vous devez donc interroger chaque société, puis combiner les données acquises.