OData Api控制器平台请求

时间:2014-05-12 08:26:30

标签: odata asp.net-web-api asp.net-apicontroller

此问题涉及来自这两个差异控制器(API vs OData)的返回JSON结果的不同“size”
例如,某些实体:(这是一个错误的组合,它只是为了说明一点,请不要判断这些实体之间的关系)

public class Customer
{
    public string Name { get; set; }
    public Category Category { get; set; }
}

public class Category
{
    public string CategoryName { get; set; }
    public List<Customers> CustomersInCategory { get; set; }
}

OData 控制器发出GET请求时,请说:

GET http://localhost:81/Customers

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

然而, 对 API 控制器的相同请求,返回客户的类别对象(即使结果为IQueryable&lt; Customer&gt;)。 问题与此相关的是,在实体之间存在循环关系的情况下,结果以递归方式变平,变得巨大(可能是无穷大)。
我一直在寻找解决这个问题的解决方案,发现像MaxDepth这样的东西不起作用,还有很多其他东西都没有产生任何效果。

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

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

[HttpGet]
[ActionName("DefaultAction")]
public IQueryable<Customer> Get()
{
     return _unitOfWork.Repository<Customer>().Query().Get();
}

感谢。

0 个答案:

没有答案