总结一下,我有两个主要表:公司和员工,他们之间有一对多的关系:员工属于公司。
公司实体有一个名为Employees的财产,允许雇用属于特定公司的员工。
如果我在浏览器中输入此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;
但这不适合我。
答案 0 :(得分:0)
该查询返回什么,错误或不是您要查找的数据?我不确定查询Odata的语法是否不同,但这是我在其他任何时候都会这样做的。
var dataServiceQuery = from comp in _context.Company.Expand("WhseEmployees")
where comp.Name == "whatever"
select comp;
答案 1 :(得分:0)
您使用的是哪个版本的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");
答案 2 :(得分:0)
最后我可以使用此查询:
var dataServiceQuery = (DataServiceQuery<WhseEmployee>)_context.Company.Where(c => c.Name == companyName)
.SelectMany(c => c.WhseEmployee);