Xamarin Forms api调用不返回相关实体包含在json字符串中

时间:2018-05-18 16:44:44

标签: c# json api xamarin

在我的ApiController中有以下内容并且它可以正常工作

    [HttpPost]
    [AllowAnonymous]
    public IEnumerable<GridPost> LoadDashboardAsync()
    {
        IEnumerable<GridPost> posts = _repo.GridPostRepository()
            .Include(m => m.LastModifiedByUser)
            .Where(a => a.IsActive == true)
            .OrderByDescending(s => s.DateLastModified);

        return posts;
    }

我可以点击一个断点,看到IEnumerable我命名为&#39;发布&#39;包含相关的用户记录(LastModifiedByUser是一个相关用户记录的FK的nav属性,而不是列表/集合)。到目前为止,这一切看起来都很好。

然后我从我的Xamarin Forms项目中的ViewModel调用此API。这适用于帖子(GridPost实体本身)。它加载和反序列化并在我的ListView中在XAML页面中显示得很好,除了相关实体根本没有出现。设置断点时,在进入下面显示的最后一行进行反序列化之前,ReadAsStringAsync()函数返回的jsonRead不包含相关的用户实体(有一个UserID FK字段确实包含ID,但是导航属性包含服务器上的相关用户的这个json字符串没有回来 - 它是null。所以问题是为什么相关用户在从服务器返回到客户端时会消失?

    Task<HttpResponseMessage> response = _apiClient.SendAsync(loadChallenges);
        HttpResponseMessage _completed = await response;
        HttpContent jsonReturned = _completed.Content;
        var jsonRead = await jsonReturned.ReadAsStringAsync();

Posts = JsonConvert.DeserializeObject<ObservableCollection<GridPostModel>>(jsonRead) as ObservableCollection<GridPostModel>;

从ReadAsStringAsync()分配后,jsonRead变量中返回的JSON示例

[{&#34; $ id&#34;:&#34; 1&#34;,&#34; title&#34;:&#34; One and done&#34;,&#34; LastModifiedByUserId&# 34;:&#34; 32e19260-7313-4eba-99b8-61077aced7a3&#34;,&#34; lastModifiedByUser&#34;:null}]

0 个答案:

没有答案