【问题标题】:How to return deep serialized object (with complex type properties) in Asp.Net web api?如何在 Asp.Net web api 中返回深度序列化对象(具有复杂类型属性)?
【发布时间】:2013-04-01 21:07:51
【问题描述】:

我有下一堂课:

public class Event
{
   public int Id { get; set; }
   public string Title { get; set; }
   public string Description { get; set; }
   public List<ImageLink> Images { get; set; }
}

public class ImageLink
{
   public int Id { get; set; }
   public string Url { get; set; }
}

我的行动:

public IQueryable<Event> GetEvents()
{
    var events = EventsRepository.Events.AsQueryable();
    return events;
}

EventsRepository.Events - 向我返回带有许多图像链接的事件,但在 brouser 中我看不到它们:

 "odata.metadata":"http://localhost:28286/odata/$metadata#Events","value":[
    {
      "Title":"Title", 
      "Description":"Description"
    },...

我知道 Odata 有 $expand 选项,但似乎还不支持。 如何强制我的应用程序返回深度可序列化对象?因为我想在我的客户端中获取所有包含的数据。

【问题讨论】:

    标签: .net serialization asp.net-web-api odata wcf-web-api


    【解决方案1】:

    如果 ImageLink 被建模为复杂类型,则 Event 的响应负载将包含 ImageLink inline。您可以告诉模型构建器将 ImageLink 映射为复杂类型,使用

    modelBuilder.ComplexType<ImageLink>();
    

    不过,正确的方法是使用 $expand。我们现在正在支持 $select 和 $expand 并且应该在下周初的夜间构建中提供工作位。

    【讨论】:

    • 我可以订阅某些内容以获取有关任何更改的通知吗?
    • This RSS 提要包含 aspnetwebstack 项目的所有源代码提交。无论如何,我会记得在这里发表评论或在我们有什么事情时联系你。
    • $select 和 $expand 现在可以在夜间构建中使用。查看post,了解如何使用我们的夜间构建。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    • 2016-05-14
    相关资源
    最近更新 更多