在我的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}]