1
当我运行针对我的控制器的方法以下的OData查询在下面的示例代码中定义,在获取()生成的查询变为零: http://my.host/api/MyClass/ $滤波器=编号当量1 & $扩大= MySecondClassOdataQueryOptions产生空表达
ODataQueryOptions not being applied的答案表明这是做到这一点的方法,但仍然失败。是的,MyClass确实有对MySecondClass的引用。 :)
编辑:多一点研究后,似乎查询为空,只有当我使用$ expand。使用$ filter,everthing按预期工作。有没有使用$ expand的陷阱,我不知道?
public MyClass {
public int Id { get; set; }
public int MySecondClassId { get; set; }
public MySecondClass MySecondClass { get; set; }
}
public MySecondClass {
public int Id { get; set; }
}
public MyDbContext : DbContext {
public DbSet<MyClass> MyClasses { get; set; }
}
public IQueryable<MyClassDto> Get(ODataQueryOptions<MyClass> options)
{
var dbContext = new MyDbContext();
IQueryable<MyClass> myClasses = dbContext.MyClasses;
var query = options.ApplyTo(myClasses) as IQueryable<MyClass>; // query is null!
query.ToList().Select(Mapper.Map<MyClass, MyClassDto>).AsQueryable();
}