在ODataQueryOptions中展开ApplyTo的结果

时间:2016-07-21 14:32:28

标签: .net entity-framework odata

我有以下函数从Controller获取ODataQueryOptions。它应该从实体框架获得所有Houseentities并返回它们。这确实适用于“/ odata / Houses”,但“/ odata / Houses?$ expand = Persons”什么也应该输出所有住在一个房子里的人都行不通。

这是因为“expand”会更改applyTo-Function返回的内容。它似乎被“包裹”成了一个“wrapperobject”。

    public List<elci.BusinessEntities.House> getHouses(ODataQueryOptions qo)
    {
        YardEntities cx = new YardEntities();
       //... mapper configuration omited ... 
        IQueryable<DataAccessLayer.House> query = qo.ApplyTo(cx.Houses) as IQueryable<DataAccessLayer.House>;

        List<BusinessEntities.House> bhl = Mapper.Map<List<DataAccessLayer.House>, List<BusinessEntities.House>>(query.ToList<DataAccessLayer.House>());
        return bhl;
    }

有人知道如何“打开”他们。

我的房子 - 实体看起来像这样:

public partial class House
{
    [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
    public House()
    {
        this.Persons = new HashSet<Person>();
    }

    public int id { get; set; }
    public string street { get; set; }
    public string city { get; set; }

    public virtual ICollection<Person> Persons { get; set; }
}

0 个答案:

没有答案