我有以下结构。
Product
{
GUID ID
string Name
GUID Category
decimal Cost
bool IsActive
}
在我的配置中,我已将ID注册为主键。 我正在尝试创建一个简单的Get端点,用于检索Products中的所有数据。 在大多数情况下,端点本身可以正常工作。
作品 - / Products /?$ filter = IsActive eq true
作品 - / Products /?$ filter = ID eq {some guid}
虽然上面是相当直接的并且按预期工作,但当我尝试将过滤器与select混合时,它似乎提供了不一致的结果。
如果是'或'我在下面找到了结果。请注意,我的测试数据集中没有值为空。
请注意,我已经编写了自己的SQL,并且我已经验证了这会按预期生成正确的数据集,但oData似乎正在对响应对象进行一些处理。 当我说不起作用时,我的意思是它只是给我一个空集合,而不是给我相关的值。
对于我的设置,我使用的是带有所有最新依赖项的oData V4。
Microsoft.ASPNet.OData - 6.1.0
Microsoft.Data.Edm / Core / Spatial - 7.4.3
有人可以解释为什么上面的过滤器以不同的方式表现吗?
其他详细信息
当我查看我返回的响应对象时,它包含20个奇数元素。
OK(response)
我创建了一个覆盖OnActionExecuted的属性,其中context.Response.Content为null,而不是包含这20个元素。
元数据
<EntityType Name="Products">
<Key>
<PropertyRef Name="ID" />
</Key>
<Property Name="ID" Type="Edm.Guid" Nullable="false" />
<Property Name="Name" Type="Edm.String" />
<Property Name="IsActive" Type="Edm.Boolean" />
<Property Name="Category" Type="Edm.Guid" />
<Property Name="Cost" Type="Edm.Decimal" />
</EntityType>