我目前正在构建一个有角度的网站,并使用Web Api 2作为我的数据服务。
当我调用http get方法时,我遇到了填充子实体的问题。子实体(字段)不会出现在Json响应中。
//Fetch records by page size
public ICollection<CompanyStatDomainModel> GetRecordsByPageSize(int page)
{
const int pgeSize = 20;
var result = _companyStatRepo.AllIncluding(c => c.CompanyDomainModel, c => c.RatingDomainModels)
.OrderBy(c => c.CompanyStatId).Skip(page * pgeSize).Take(pgeSize).ToList();
return result;
}
CONTROLLER
public ICollection<CompanyStatDomainModel> GetRecordsByPageSize(int page)
{
var companyStatService = new CompanyStatService();
return companyStatService.GetRecordsByPageSize(page);
}
WebApiConfig.cs
var json = config.Formatters.JsonFormatter;
json.SerializerSettings.PreserveReferencesHandling = Newtonsoft.Json.PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
答案 0 :(得分:0)
解决此类问题的最简单方法是将EF查询的结果手动投影到所需的结构,例如
var result = _companyStatRepo
.AllIncluding(c => c.CompanyDomainModel, c => c.RatingDomainModels)
.OrderBy(c => c.CompanyStatId).Skip(page * pgeSize)
.Take(pgeSize).Select(csr => new CompanyStatRepo {
prop1 = csr.prop1,
prop2 = csr.prop2,
...
RatingDomainModels = csr.RatingDomainModels.ToList()
}).ToList();
我不知道你班级的真实结构,但这是基本的想法。