webApi不从自定义POCO返回关联实体

时间:2016-08-22 21:57:35

标签: asp.net-web-api2

我正在创建一个webapi来返回数据。我已经构建了以下产品/子产品类和硬编码数据。当我测试api时,只返回产品信息。没有提到儿童产品。我错过了什么?这是代码: POCO课程:

public class Product
{
    public Product()
    {

    }
    public string ProductCode { get; set; }
    public List<SubProduct> SubProducts { get; private set; } = new List<Domain.SubProduct>();
}

public class SubProduct
{
    public SubProduct()
    {
        Plans = new List<Plan>();
    }
    public Product Product { get; set; }
    public string SubProductCode { get; set; }
}

web api控制器代码:

public class OdsDataController : ApiController
{
    public IHttpActionResult GetTestData()
    {
        List<Domain.Product> returnData = new List<Domain.Product>();
        returnData.Add(new Domain.Product { ProductCode = "123" });
        returnData.First().SubProducts.Add(new Domain.SubProduct { SubProductCode = "1255" });
        return Ok(returnData);
    }
}

在浏览器中,当我点击此方法时,我得到: http://localhost:56459/api/OdsData/gettestdata

[{ “产品代码”: “123”}]

即使在小提琴手中,我只看到了ProductCode

知道为什么我没有得到子产品信息?我错过了什么明显的东西? 谢谢 d

1 个答案:

答案 0 :(得分:0)

对我来说没有意义,但我必须在类上添加Serializable和DataContract属性。在属性上,我必须添加DataMember属性。然后它按预期工作。 以下是其他人的代码..如果需要:

[Serializable]
[DataContract]
public class Product
{
    public Product()
    {

    }
    [DataMember]
    public string ProductCode { get; set; }
    [DataMember]
    public List<SubProduct> SubProducts { get; private set; } = new List<Domain.SubProduct>();
}