[英]Retrieving entities from a one to many relationship (Odata)
总结一下,我有两个主表: Company和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;
但这对我不起作用。
该查询返回什么,错误或者不是您要查找的数据? 我不确定查询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);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.