林克 - 添加 .包含(x=>表)导致错误 500



我有一个相当简单的数据库模式。我有一份墓地的名单,每个墓地可能都有一个它所在的国家ID。大多数目前为空。我正试图返回分页结果。

如果我做下面的操作,它会非常好、快速、分页。如果我使用.Include,我可以看到List<T>返回到控制器,并且控制器返回到API。然而,API显示错误500。

public Shared.Models.Paging.PagedResult<Cemetery> List(int page, string filter)
{
const int pageSize = 10;
var data = _ctx.Cemeteries
// .Include(p => p.Country)
.AsNoTracking()
.AsQueryable();
if (!string.IsNullOrEmpty(filter) && filter != "null")
{
data = data.Where(filter);
}
return data.GetPaged(page, pageSize);
}
public partial class Cemetery
{
public int Id { get; set; }
public string Name { get; set; } = null!;
public int? CountryId { get; set; }
public DateTime? CreatedAt { get; set; }
public DateTime? UpdatedAt { get; set; }
public virtual Country? Country { get; set; }
}
public partial class Country
{
public Country()
{
Cemeteries = new HashSet<Cemetery>();
}
public int Id { get; set; }
public string Name { get; set; } = null!;
public DateTime? CreatedAt { get; set; }
public DateTime? UpdatedAt { get; set; }
public virtual ICollection<Cemetery> Cemeteries { get; set; }
}

如果我在代码中放置一个try/catch,我得到的只是一个错误500,服务器没有指示成功。

public async Task<PagedResult<CemeteryModel>> List(int page, string filter)
{
var searchParams = $"/{page}?filter=";
searchParams += string.IsNullOrEmpty(filter) ? "null" : filter;
return await _httpClient.GetFromJsonAsync<PagedResult<CemeteryModel>>($"api/Cemetery/List{searchParams}");
}

500表示服务器上出现异常,因此您需要调试服务器代码,而不是客户端代码(这就是您目前正在做的(。

话虽如此,如果filter是一个字符串,那么我很惊讶下面的代码竟然编译了。。。

data=数据。其中(过滤器(;

因为,就我所见,Where没有使用字符串的重载。

然而,调试服务器代码应该可以准确地揭示问题所在

答案是我的控制器中存在从Cemetery到Cemetery Model 的映射问题

我有什么

CreateMap<Cemetery, CemeteryModel>().ReverseMap();

我需要

CreateMap<PagedResult<Cemetery>, PagedResult<CemeteryModel>>().ReverseMap();

相关内容

最新更新