我有以下函数从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; }
}