Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cassandra/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ODataAPI控制器请求_Odata_Asp.net Web Api_Asp.net Apicontroller - Fatal编程技术网

ODataAPI控制器请求

ODataAPI控制器请求,odata,asp.net-web-api,asp.net-apicontroller,Odata,Asp.net Web Api,Asp.net Apicontroller,这个问题涉及从这两个不同控制器(API与OData)返回的JSON结果的不同大小 一些实体例如:(这是一个糟糕的组合,它只是为了表明观点,请不要判断这些实体之间的关系) 结果将不包含客户的Category对象,除非我在URL上明确提到“$expand=Category” 但是,, 对API控制器的相同请求将返回客户的类别对象(即使结果是IQueryable)。 这方面的问题是,在实体之间存在循环关系的情况下,结果会递归地变平,变得巨大(可能是无穷大)。 我一直在寻找这个问题的解决方案,发现像M

这个问题涉及从这两个不同控制器(API与OData)返回的JSON结果的不同大小
一些实体例如:(这是一个糟糕的组合,它只是为了表明观点,请不要判断这些实体之间的关系)

结果将不包含客户的Category对象,除非我在URL上明确提到“$expand=Category”

但是,, 对API控制器的相同请求将返回客户的类别对象(即使结果是IQueryable)。 这方面的问题是,在实体之间存在循环关系的情况下,结果会递归地变平,变得巨大(可能是无穷大)。
我一直在寻找这个问题的解决方案,发现像MaxDepth这样的东西不起作用,还有很多其他的东西什么结果都没有

我真正想要的是一种“告诉”API控制器或其方法的方法,“不要扩展结果”——或者更好的是,忽略循环引用(我也尝试过,但没有成功)

已更新: 以下是API控制器上的GET方法:

[HttpGet]
[ActionName("DefaultAction")]
public IQueryable<Customer> Get()
{
     return _unitOfWork.Repository<Customer>().Query().Get();
}
[HttpGet]
[ActionName(“DefaultAction”)]
公共IQueryable Get()
{
返回_unitOfWork.Repository().Query().Get();
}

谢谢。

在Web API的情况下,您是否使用延迟加载?听起来好像是迫不及待的加载?你能在控制器中发布你的动作定义吗?它是用来获取客户的?
GET http://localhost:81/Customers
[HttpGet]
[ActionName("DefaultAction")]
public IQueryable<Customer> Get()
{
     return _unitOfWork.Repository<Customer>().Query().Get();
}