我有一个基本的Odata终点,它使用Entity Framework来查询数据库。 当使用一些基本过滤器查询终点时,它似乎正常工作,但我注意到一个有关行为。以下示例将证明我的担忧。
Http GET:
www.api.com?$filter=SomeField eq(一些独特的价值)
将导致以下代码:
[EnableQuery]
public IQueryable<vwResultObject> Get()
{
try
{
var r db.vwResultObject;
var b = r.toList<vwResultObject>();
return r;
}
catch (System.Exception ex)
{
throw;
}
}
此代码完全按预期工作,返回值是db中唯一一个与唯一字段匹配的唯一行。但是我担心的是列表“b”的长度等于表中的总行数。这是否意味着过滤器未在sql级别应用?我错过了什么吗?过滤器未应用于SQL级别似乎非常愚蠢,我无法相信这是预期的。我必须在某个时候犯错误。