0

这个问题处理来自这两个差异控制器(API 与 OData)的返回 JSON 结果的不同“大小”
一些实体例如:(这是一个糟糕的组合,它只是为了说明一个观点,请不要判断这些实体之间的关系)

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

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

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

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

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

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

谢谢。

4

0 回答 0