我使用带有2个实体的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";
但是当我通过链接../SalaryNaryadWork/TechOrder.Functions.GetNaryadSalaryWork(pNaryadID=1)
调用此函数时,我只得到没有相关实体的实体:
尽管函数返回相关的实体(我在visual studio中的调试函数中看到变量tmp
)
所以我的问题是,是否有可能在不使用Get()
控制器功能的扩展选项的情况下通过函数来解决这个问题并获得相关实体?