C# 从ODataWebAPI中的函数返回相关实体
我使用ASP.NET Web API 2.2创建了一个OData v4端点,其中包含两个实体: 我在控制器中创建了一个函数,通过使用LINQ中的Include返回实体和相关实体: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
[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
定义为一个复杂类型,如前所述。否则,您必须使用展开
。我认为您必须将工资\工作\列表
定义为一个复杂类型,如前所述。否则,您必须使用展开。