我使用EF5和代码优先方法有一个相当标准的WebApi 2.0 OData 4.0 Web服务。这项服务有效,我可以通过外键查询实体和相关实体。
该服务是只读的,控制器只有一个Get和Get-by-key实现。
public class MyTableController : MyDbController
{
[EnableQuery]
public IQueryable<MyTable> Get()
{
return db.MyTable;
}
[EnableQuery]
public SingleResult<MyTable> Get([FromODataUri] int key)
{
IQueryable<MyTable> result = db.MyTable.Where(p => p.pk == key);
return SingleResult.Create(result);
}
}
在两个Get()实现中,我希望能够访问OData中使用的表列表以及生成的SQL查询。 MyTable显然是其中之一,但我如何获得其他(其中包括(嵌套)$ expand中使用的那些)?我可以尝试自己解析URL,但这似乎不是一个非常好的方法。
答案 0 :(得分:1)
var select = $("select");
select.change(function(e) {
select.not(this).each(function() {
this.selectedIndex = e.target.selectedIndex
})
})
然后你在这个方法中得到queryOptions,你可以去SelectExpandQueryOption找到ExpandItem,然后你得到所有的表。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select>
<option>america</option>
<option>rusia</option>
<option>china</option>
</select>
<select> <!--here the second select tag which has so many option value-->
<option>list1</option>
<option>list2</option>
<option>list3</option>
</select>
在Controller方法
上使用此属性public virtual IQueryable ApplyQuery