C# 从ODataWebAPI中的函数返回相关实体

C# 从ODataWebAPI中的函数返回相关实体,c#,entity-framework,asp.net-web-api,odata,C#,Entity Framework,Asp.net Web Api,Odata,我使用ASP.NET Web API 2.2创建了一个OData v4端点,其中包含两个实体: 我在控制器中创建了一个函数,通过使用LINQ中的Include返回实体和相关实体: [HttpGet] [ODataRoute("SalaryNaryadWork/TechOrder.Functions.GetNaryadSalaryWork(pNaryadID={pNaryadID})")] public IHttpActionResult GetNaryadSalaryWork(int

我使用ASP.NET Web API 2.2创建了一个OData v4端点,其中包含两个实体:

我在控制器中创建了一个函数,通过使用LINQ中的Include返回实体和相关实体:

[HttpGet]  
  [ODataRoute("SalaryNaryadWork/TechOrder.Functions.GetNaryadSalaryWork(pNaryadID={pNaryadID})")]
public IHttpActionResult GetNaryadSalaryWork(int pNaryadID)
{
var tmp =_ctx.SALARY_NARYAD_WORK.Include(s => s.SALARY_WORK_LIST).Where(sw => sw.NARYAD_ID == pNaryadID).ToList();
return Ok(tmp);
}
功能配置代码为:

var GetNaryadSalaryWork = builder.EntityType<SALARY_NARYAD_WORK>().Collection.Function("GetNaryadSalaryWork");
GetNaryadSalaryWork.Parameter<int>("pNaryadID");
GetNaryadSalaryWork.ReturnsCollectionFromEntitySet<SALARY_NARYAD_WORK>("SalaryNaryadWork");
GetNaryadSalaryWorkList.Namespace = "TechOrder.Functions";
var GetNaryadSalaryWork=builder.EntityType().Collection.Function(“GetNaryadSalaryWork”);
GetNaryadSalaryWork.Parameter(“pnaryaddid”);
GetNaryadSalaryWork.ReturnsCollectionFromEntitySet(“SalaryNaryadWork”);
GetNaryadSalaryWorkList.Namespace=“TechOrder.Functions”;
但是当我通过链接
。/SalaryNaryadWork/TechOrder.Functions.GetNaryadSalaryWork(pnaryadd=1)调用此函数时,
我只得到我的实体,没有相关的实体:

尽管函数也返回相关实体(我在visual studio中调试函数时在变量
tmp
中看到了这一点)


所以我的问题是,不使用
get()
controller函数上的expand选项,是否可以准确地通过函数修复该问题并获取相关实体?

我认为您必须将
SALARY\u WORK\u LIST
定义为一个复杂类型,如前所述。否则,您必须使用
展开
。我认为您必须将
工资\工作\列表
定义为一个复杂类型,如前所述。否则,您必须使用
展开