从一对多关系中检索实体 (Odata)
Retrieving entities from a one to many relationship (Odata)
总结一下,我有两个主表:Company和Employees,它们之间是一对多的关系:employees belongs到一家公司。
Company 实体有一个名为 Employees 的 属性,它允许获取属于特定 Company 的员工。
如果我在浏览器中输入这个 URL,它会起作用,我会得到一个员工列表:
http://domain.com/DynamicsNAV80/OData/Company('whatever')/Employees
现在,我想使用 Linq 查询检索员工,我该怎么做?
我试过这个:
var dataServiceQuery = (DataServiceQuery<Company>)from comp in _context.Company.Expand(comp => comp.WhseEmployee)
where comp.Name == "whatever"
select comp.WhseEmployee;
但这对我不起作用。
那个查询 return 是什么,是错误还是不是您要查找的数据?我不确定查询 Odata 的语法是否不同,但这是我在其他任何时候都会做的。
var dataServiceQuery = from comp in _context.Company.Expand("WhseEmployees")
where comp.Name == "whatever"
select comp;
您使用的是哪个版本的 OData?
如果是V4。您可以尝试以下代码。
var employees = _context.Company.ByKey("whatever").WhseEmployee;
如果是V3。需要先查询公司,然后使用LoadProperty发送请求到/Company('whatever')/WsheEmployee.
var company = _context.Company.Where(c=>c.Name="whatever").First();
dsc.LoadProperty(company, "WsheEmployee");
我终于可以使用这个查询了:
var dataServiceQuery = (DataServiceQuery<WhseEmployee>)_context.Company.Where(c => c.Name == companyName)
.SelectMany(c => c.WhseEmployee);
总结一下,我有两个主表:Company和Employees,它们之间是一对多的关系:employees belongs到一家公司。
Company 实体有一个名为 Employees 的 属性,它允许获取属于特定 Company 的员工。
如果我在浏览器中输入这个 URL,它会起作用,我会得到一个员工列表:
http://domain.com/DynamicsNAV80/OData/Company('whatever')/Employees
现在,我想使用 Linq 查询检索员工,我该怎么做?
我试过这个:
var dataServiceQuery = (DataServiceQuery<Company>)from comp in _context.Company.Expand(comp => comp.WhseEmployee)
where comp.Name == "whatever"
select comp.WhseEmployee;
但这对我不起作用。
那个查询 return 是什么,是错误还是不是您要查找的数据?我不确定查询 Odata 的语法是否不同,但这是我在其他任何时候都会做的。
var dataServiceQuery = from comp in _context.Company.Expand("WhseEmployees")
where comp.Name == "whatever"
select comp;
您使用的是哪个版本的 OData?
如果是V4。您可以尝试以下代码。
var employees = _context.Company.ByKey("whatever").WhseEmployee;
如果是V3。需要先查询公司,然后使用LoadProperty发送请求到/Company('whatever')/WsheEmployee.
var company = _context.Company.Where(c=>c.Name="whatever").First();
dsc.LoadProperty(company, "WsheEmployee");
我终于可以使用这个查询了:
var dataServiceQuery = (DataServiceQuery<WhseEmployee>)_context.Company.Where(c => c.Name == companyName)
.SelectMany(c => c.WhseEmployee);