首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何添加一个方法,按房屋Id返回特定房屋的公寓,并使其在"/api/ house /{houseId}/apartments“中可用

如何添加一个方法,按房屋Id返回特定房屋的公寓,并使其在"/api/ house /{houseId}/apartments“中可用
EN

Stack Overflow用户
提问于 2022-09-21 06:39:43
回答 2查看 110关注 0票数 1

公寓模式

代码语言:javascript
复制
    public long Id { get; set; }
    public int ApartmentNumber { get; set; }
    public int FloorNumber { get; set; }
    public int NumberofRooms { get; set; }
    public int NumberofResidents { get; set; }
    public decimal FullArea { get; set; }
    public decimal LivingSpace { get; set; }
    public long HouseId { get; set; }
    public House House { get; set; }
    public ICollection<Tenant> Tenants { get; set; }

房屋模型

代码语言:javascript
复制
    public long Id { get; set; }
    public int Number { get; set; }
    public string Street { get; set; }
    public string City { get; set; }
    public string Country { get; set; }
    public string Postcode { get; set; }
    public ICollection<Apartment> Apartments { get; set; }

我知道,为了使它在"/api/house/{houseId}/apartments“中可用,您需要添加路由,对吗?但我不完全明白如何使它归还特定房屋的公寓,根据房屋的Id。这种方法应该定位在哪个控制器中?

代码语言:javascript
复制
[Route("/api/house/{houseId}/apartments")]
[HttpGet("{id}")]
public async Task<ActionResult<Apartment>> GetApartment(long id)
{
  var HouseId= await _context.Apartments.FindAsync(id);

  if (HouseId == null)
  {
    return NotFound();
  }

  return HouseId;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-09-21 09:51:34

控制器的外观如下所示:

代码语言:javascript
复制
[ApiController]
[Route("api/[controller]")]
public class HouseController : ControllerBase
{

    [HttpGet("{houseId}/apartments")]
    public async Task<ActionResult<IEnumerable<Apartment>>> GetApartments(int houseId)
    {
        var house = await _context.Houses
            .Include(house => house.Apartments)
            .FirstOrDefaultAsync(house => house.Id == houseId);

        if (house == null)
        {
            // the house with Id=houseId does not exist so we return NotFound
            return NotFound();
        }

        // the house was found so return its apartments
        return house.Apartments.ToList();
    }
}
票数 0
EN

Stack Overflow用户

发布于 2022-09-21 09:15:25

修改您的api如下:

代码语言:javascript
复制
[Route("/api/house/{houseId}/apartments")]
        [HttpGet]
        public ActionResult<Apartment> GetApartment(int houseId)
        {  
            return Ok();
        }

您现在可以将houseid传递给控制器,并且可以在控制器中尝试以下代码:

代码语言:javascript
复制
var targetapartments= await _context.Apartments.Where(x.HouseId==houseId).ToList();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73796331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档