EF 6和Web Api。如何在GET上返回自定义数据?

时间:2014-03-06 11:48:26

标签: entity-framework asp.net-web-api

我需要从Web Api控制器返回一些标准GET操作中不存在的特定数据。我们说标准控制器动作是:

// GET api/xTourist/5
        [ResponseType(typeof(xTourist))]
        public IHttpActionResult GetxTourist(int id)
        {
            xTourist xtourist = db.xTourist.Find(id);
            if (xtourist == null)
            {
                return NotFound();
            }

            return Ok(xtourist);

但我需要返回更多数据,比方说酒店名称。我通过使用函数得到的酒店名称:

public string FindHotelName (int id)
        {
            int? hotelid = db.xTourist.Find(id).КодИ;
            string hotelname = db.xAdres.Find(hotelid).NameC;
            return hotelname;
        }

但是我该怎样加入这些数据并在控制器答案中将它们全部归还?

1 个答案:

答案 0 :(得分:1)

所以你只想要返回2个结果?为什么不创建一个既包含所需值的新对象呢?

public class TouristReturnDTO
{
    public xTourist Tourist { get; set; }
    public string HotelName { get; set; }
}

public IHttpActionResult GetxTourist(int id)
{
    xTourist xtourist = db.xTourist.Find(id);
    if (xtourist == null)
    {
        return NotFound();
    }
    string hotelName = FindHotelName(id)
    return Ok(new TouristReturnDto
        {
            Tourist = xtourist,
            HotelName = hotelName
        }
    );
}

甚至不需要创建TouristReturnDTO,如果您愿意,可以使用匿名类型:

return Ok(new 
        {
            Tourist = xtourist,
            HotelName = hotelName
        }
    );