C# Odata未在SQL级别应用筛选器
我有一个基本的Odata端点,即使用实体框架查询数据库。 当使用一些基本过滤器查询端点时,它似乎工作正常,但我注意到一个令人担忧的行为。下面的例子将说明我的担忧 Http访问: www.api.com?$filter=SomeField eq(某些唯一值) 这将导致以下代码:C# Odata未在SQL级别应用筛选器,c#,sql-server,entity-framework,odata,C#,Sql Server,Entity Framework,Odata,我有一个基本的Odata端点,即使用实体框架查询数据库。 当使用一些基本过滤器查询端点时,它似乎工作正常,但我注意到一个令人担忧的行为。下面的例子将说明我的担忧 Http访问: www.api.com?$filter=SomeField eq(某些唯一值) 这将导致以下代码: [EnableQuery] public IQueryable<vwResultObject> Get() { try { var r
[EnableQuery]
public IQueryable<vwResultObject> Get()
{
try
{
var r db.vwResultObject;
var b = r.toList<vwResultObject>();
return r;
}
catch (System.Exception ex)
{
throw;
}
}
[启用查询]
公共IQueryable Get()
{
尝试
{
var r db.vwResultObject;
var b=r.toList();
返回r;
}
catch(System.Exception-ex)
{
投掷;
}
}
这段代码完全按照预期工作,返回值是数据库中唯一的一行,与unique字段匹配。然而,我担心的是列表“b”的长度等于表中的总行数。这是否意味着过滤器不应用于sql级别?我错过什么了吗?过滤器没有应用到SQL级别,这似乎非常愚蠢,我无法相信这是我们的初衷。我一定是犯了个错误。不知羞耻的自暴自弃你找到解决办法了吗?