ODataAPI控制器请求
这个问题涉及从这两个不同控制器(API与OData)返回的JSON结果的不同大小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
一些实体例如:(这是一个糟糕的组合,它只是为了表明观点,请不要判断这些实体之间的关系) 结果将不包含客户的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();
}