【发布时间】:2011-02-18 04:11:03
【问题描述】:
我正在使用 .NET MVC 开发 API 并以 JSON 格式返回结果。起初,我从数据库以 IEnumerable 形式返回的结果似乎可以正常工作,然后将其转换为要返回的 JSONResult 类型。
这为我序列化层次结构,并且子对象会根据设计器中的关系自动加载,并成为 JSON 层次结构的一部分。
IEnumerable<Book> books= _contentRepository.GetBooks();
return Json(new {
success = true,
data = new {
books = books
}
}, JsonRequestBehavior.AllowGet);
这种能力也是问题所在,因为有时会加载我不需要的整个子对象。例如,假设我有一个书实体,它有相关的书,而这些相关的书也有相关的书,树很快就会变得很深。
Rick Strahl 在他的文章结尾谈到了这一点:http://www.west-wind.com/weblog/posts/147218.aspx
我还是想保持分层,这样json也是分层的。例如book.author, book.publisher[0].name 但我想控制查询中加载的内容。
我是否正在考虑删除设计器中实体之间的所有链接并在查询中指定连接,并可能手动构建生成的层次结构?
【问题讨论】:
标签: asp.net-mvc linq json linq-to-sql serialization