如何在 WebAPI 中实现这样的“智能”GET?我想从我的服务中获得 2 个课程。假设它的书店与书籍对象有关。
public class Book
{
Guid Id { get; set; }
string Title { get; set; }
Store Store { get; set; }
}
public class Store
{
Guid Id { get; set; }
string Title { get; set; }
string Owner { get; set; }
IEnumerable<Book> Books { get; set; }
}
我在代码中有 SQL 服务器和 EntityFramework 适配器的后端。我应该如何在我需要它(要求它)之后才返回书籍列表,就像 OData 一样?如您所见,我有循环依赖,这使我的 JSON 序列化程序显示错误。我解决它:
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = Newtonsoft.Json.ReferenceLoopHandling.Serialize;
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
但是序列化了所有数据,我的反应是巨大的,这对我的 Windows Phone 应用程序不利。在某些情况下,我只需要 Store 对象,但在其他情况下,我需要包含所有参考书籍的 Store。
在控制器中,我使用 [Queryable] 属性来使用 OData 查询。PS 我无法创建更多的网络方法,如 GetBooks、GetStore 等。它应该是一种方法。
我该如何解决我的问题?