我使用Net Core 2.2创建了一个简单的Web api。我下面有这个api控制器,它有一个特定的地牢。
它以JSON形式返回地牢,但没有返回与地牢相关的MonsterList。
这是我的控制器:
// GET: api/DungeonLists/5
[HttpGet("{id}")]
public async Task<ActionResult<DungeonList>> GetDungeonList(Guid id)
{
var dungeonList = await _context.DungeonList.FindAsync(id);
if (dungeonList == null)
{
return NotFound();
}
return dungeonList;
}
这是我的地牢模型。如您所见,它有一个MonsterList。
public partial class DungeonList
{
public DungeonList()
{
MonsterList = new HashSet<MonsterList>();
}
public Guid DungeonId { get; set; }
public string DungeonName { get; set; }
public string DungeonDesc { get; set; }
public string MapArea { get; set; }
public bool ShowProgress { get; set; }
public bool? DungeonResumable { get; set; }
public virtual ICollection<MonsterList> MonsterList { get; set; }
}
这是我的MonsterList模型:
public partial class MonsterList
{
public string MonsterId { get; set; }
public Guid DungeonId { get; set; }
public string MonsterName { get; set; }
public byte? MonsterType { get; set; }
public bool IsBossMonster { get; set; }
public virtual DungeonList Dungeon { get; set; }
}
我希望JSON还显示与地牢关联的怪物列表。
有没有办法做到这一点?还是我需要进行单独的API调用?
谢谢!
答案 0 :(得分:0)
您需要将代码更改为以下内容:
[HttpGet("{id}")]
public async Task<ActionResult<DungeonList>> GetDungeonList(Guid id)
{
var dungeonList = await _context.DungeonList
.Include(i => i.MonsterList)
.FirstOrDefaultAsync(p => p.Id = id);
if (dungeonList == null)
{
return NotFound();
}
return dungeonList;
}
此外,由于您没有使用LazyLoading,因此不需要MonsterList集合上的[virtual]