如何在WebAPI中实现这种“智能”GET?我有两个班,我想从我的服务中获得。让我们说它的书店与书籍对象有关系。使用循环依赖和可加载列表实现WebAPI
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查询。 P.S.我无法创建更多的Web方法,如GetBooks,GetStore等。它应该是一种方法。
我该如何解决我的问题?
为什么你不能创建更多的方法,如'GetBooks'和'GetStore'?为什么它只能是一种方法? – danludwig