我有一个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
具有所有需要的信息。是由于类别PersonellDTO
和Personell
不同而导致的错误吗。如何使其发挥作用?
.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);
}