Include在DTO类的用例中产生null



我有一个linq语句,它似乎运行良好,并获得了正确的数据:

[HttpGet]
public async Task<IActionResult> Get()
{
List<DiaryRecord> diaryRecords = await this.Context.DiaryRecords
.Include(d => d.Project)                                                              
.Include(e => e.Employees)                                                                  
.ToListAsync();
return Ok(diaryRecords);
}

员工是

public virtual ICollection<Personell> Employees { get; set; }

我通过以下方式请求客户端程序集中的此列表:

this.DiaryRecords = await this.HttpClient
.GetFromJsonAsync<IEnumerable<DiaryRecordModelDTO>>("api/Diary");

员工所在地:

public ICollection<PersonellDTO> Employees { get; set; }

作为输出,除了Employees在此处为null之外,this.DiaryRecords具有所有需要的信息。是由于类别PersonellDTOPersonell不同而导致的错误吗。如何使其发挥作用?

.GetFromJsonAsync总是非常棘手,从不使用接口来反序列化json。json不知道PersonellDTO或Personell使用了什么类来创建http响应。

在您的DTO接口中,这应该被固定为一个具体的类

public List<PersonellDTO> Employees { get; set; }

对于httpclient ,我总是使用这样的代码

var response = await client.GetAsync(api);
if (response.IsSuccessStatusCode)
{
var stringData = await response.Content.ReadAsStringAsync();
var result = JsonConvert.DeserializeObject<List<DiaryRecordModelDTO>(stringData);
}

相关内容

  • 没有找到相关文章