此问题涉及来自这两个差异控制器(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();
}
感谢。