是否可以通过Dynamics Nav 2016中的ODATA查询所有公司

时间:2017-10-17 13:22:08

标签: c# web-services odata microsoft-dynamics dynamics-nav

我已经编写了以下代码来查询Dynamics Nav 2016中的ODATA端点。我通过创建ODATA connected service来完成此操作。我在URL中传递了公司名称:

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);
}

是否可以查询Navision中的所有公司?当我省略URL的/Company(...)部分时,出现错误:

  

DataServiceClientException:无法处理请求,因为找不到默认的Microsoft Dynamics NAV公司。您可以在服务配置文件中指定默认公司,或为每个租户指定一个公司,或者您可以以" company = [name]"的形式添加查询字符串。您可以通过访问默认的OData Web服务公司来查看可用的公司。有关更多信息,请参阅" OData Web服务"在帮助中。

1 个答案:

答案 0 :(得分:2)

不同的公司意味着SQL上的物理上不同的表,其名称为[dbo].[CompanyName$TableName]。导航不会为您加入。如果您使用的是租户,那么每个租户数据库中的表格将是独立的。

因此,您需要查询每家公司,然后合并获得的数据。