c# - API 返回空白数组 (ASP.NET CORE)
问题描述
我有两个模型类,experience
并且proposals
.
这是体验代码
public class Experience : BaseEntity
{
public virtual string Name { get; set; }
public virtual string Description { get; set; }
public virtual DateTime? CreationDate { get; set; }
public virtual string City { get; set; }
public virtual double Price { get; set; }
public virtual double? Lat { get; set; }
public virtual double? Lng { get; set; }
public virtual bool IsActive { get; set; }
public virtual bool IsFinished { get; set; }
public virtual bool IsConfirmed { get; set; }
public virtual int CountryId { get; set; }
[ForeignKey("CountryId")]
public virtual Country Country { get; set; }
public virtual string UserId { get; set; }
[ForeignKey("UserId")]
public virtual AppUser IdentityUser { get; set; }
public virtual ICollection<Proposals.Proposals> Proposals { get; set; }
public virtual ICollection<Comments.Comments> Comments { get; set; }
}
和提案
public class Proposals : BaseEntity
{
public virtual string Description { get; set; }
public virtual double Price { get; set; }
public virtual bool IsActive { get; set; }
public virtual bool IsConfirmed { get; set; }
[ForeignKey("ExperienceId")]
public virtual Experience Experience { get; set; }
public virtual int ExperienceId { get; set; }
public virtual string UserId { get; set; }
[ForeignKey("UserId")]
public virtual AppUser IdentityUser { get; set; }
}
经验与用户模型有关
我需要获得所有与体验相关的、有用户的提案。
我写了这个方法
public async Task<List<ProposalsDto>> GetUserProposalCustomer(string id)
{
var proposals = await _context.Experiences.Where(x => x.UserId == id).Select(x => x.Proposals)
.ProjectTo<ProposalsDto>().ToListAsync();
return proposals;
}
但它返回给我这个
[
{
"description": null,
"proposalPrice": 0.0,
"experiencePrice": 0.0,
"creator": null,
"proposalMessage": null,
"email": null,
"experienceId": 0,
"isActive": false,
"userId": null,
"isConfirmed": false,
"id": 0
},
{
"description": null,
"proposalPrice": 0.0,
"experiencePrice": 0.0,
"creator": null,
"proposalMessage": null,
"email": null,
"experienceId": 0,
"isActive": false,
"userId": null,
"isConfirmed": false,
"id": 0
},
我希望拥有这些价值观
我的麻烦在哪里?
更新
我尝试添加.Include
并尝试编写 SQL 脚本
就这个
SELECT a.id
FROM dbo.Proposals AS a
INNER JOIN dbo.Experiences AS b ON a.ExperienceId=b.Id WHERE a.UserId = '3f4853a0-e310-44c2-a9e5-0c8d1dd7231e';
我拥有所有的价值观。但是在 API 上,我有和以前一样的东西。
解决方案
您是否在 EF 配置中启用了延迟加载?
尝试使用Include
预加载提案。
var proposals = await _context
.Experiences
.Include(x => x.Proposals)
.Where(x => x.UserId == id)
.Select(x => x.Proposals).ToListAsync();
推荐阅读
- java - 我可以在 ios 开发的 xcode 项目中使用 java 库(瑞士星历表)吗?
- ruby - 如何重新创建任何?Ruby中的方法
- opencart - 将哈希更新为 HMAC-SHA-512
- powershell - 在 PowerShell 并行工作流中将输出导出到 CSV 时出现问题
- angular - Mat-Menu 上 Angular-Material 的角度测试
- android - 谷歌地图黑线
- python-3.x - 使用python卡住的套接字
- python - Tkinter 绑定:如何理解 for 循环中的范围?
- angular - 我如何将两个表单转换为组件并添加组件以在角度 5 中查看
- google-cloud-sql - Google Cloud SQL 以编程方式导入数据库(无提示)