无法按来自远程 url 的字符串进行过滤

Cannot filter by string from remote url

创建了一个 WCF 数据服务以从 Oracle 数据库中提取数据,在 VS 中调试时我可以使用 ?$filter 语法来过滤返回的集合。

但是,使用遥控器 url 我不能。

注意事项:我可以按整数和日期过滤,但不能按字符串过滤。

此外,我无法按代码中的任何字符串字段进行过滤。过滤器被忽略。

下面的示例项目:

     <?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://localhost:61905/CampaignerSVC.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Contacts</title>
  <id>http://localhost:61905/CampaignerSVC.svc/Contacts</id>
  <updated>2015-04-29T15:06:48Z</updated>
  <link rel="self" title="Contacts" href="Contacts" />
  <entry>
    <id>http://localhost:61905/CampaignerSVC.svc/Contacts(23517014)</id>
    <title type="text"></title>
    <updated>2015-04-29T15:06:48Z</updated>
    <author>
      <name />
    </author>
    <link rel="edit" title="ContactList" href="Contacts(23517014)" />
    <category term="Campaigner_DAL_WCF.ContactList" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
    <content type="application/xml">
      <m:properties>
        <d:LicenseNumber m:type="Edm.Int32">23517014</d:LicenseNumber>
        <d:ClientCode>2000</d:ClientCode>
        <d:ClientName>Doodler</d:ClientName>
        <d:ClientMnemonic>DD</d:ClientMnemonic>
        <d:LastName>Kerr</d:LastName>
        <d:FirstName>Rover</d:FirstName>
        <d:MiddleName>Frank</d:MiddleName>
        <d:Title>Mr.</d:Title>
        <d:PreferredFirstName>Rover</d:PreferredFirstName>
        <d:PreferredMiddleName>Frank</d:PreferredMiddleName>
        <d:CompanyName m:null="true" />
        <d:JobTitle m:null="true" />
        <d:Gender>M</d:Gender>
        <d:DateOfBirth m:type="Edm.DateTime">1947-04-27T00:00:00</d:DateOfBirth>
        <d:PrimaryChapterCode m:type="Edm.Int16">400</d:PrimaryChapterCode>
        <d:AlternateChapterCode m:type="Edm.Int16" m:null="true" />
        <d:MainAddrStreetNo>121</d:MainAddrStreetNo>
        <d:MainAddrLine1>So Crescent</d:MainAddrLine1>
        <d:MainAddrLine2 m:null="true" />
        <d:MainAddrLine3 m:null="true" />
        <d:MainAddrCity>MAICK</d:MainAddrCity>
        <d:MainAddrProvCode>ON</d:MainAddrProvCode>
        <d:MainAddrProv>Ontario</d:MainAddrProv>
        <d:MainAddrPostalCode>KB7</d:MainAddrPostalCode>
        <d:MainAddrCountryCode>CA</d:MainAddrCountryCode>
        <d:MainAddrCountry>Canada</d:MainAddrCountry>
        <d:MainPhoneNum>610-000-0703</d:MainPhoneNum>
        <d:MainPhoneExt m:null="true" />
        <d:MainFaxNum m:null="true" />
        <d:MainEmailAddr>someone@rogers.com</d:MainEmailAddr>
        <d:CellPhoneNum m:null="true" />
        <d:ChangeType>D</d:ChangeType>
        <d:EventTimeStamp m:type="Edm.DateTime">2015-04-29T02:40:02</d:EventTimeStamp>
        <d:PrivacyIndicator>N</d:PrivacyIndicator>
      </m:properties>
    </content>
  </entry>
</feed>

您也可以使用引号中的字符串按字符串进行过滤,如下所示-
'string'

好的,问题是我创建了一个 class 来存储实体模型的结果。

虽然我指定了一个 DataKey 值,但问题是我指定的字段不是唯一的,因此过滤器被忽略(或者只有第一个匹配的记录被过滤)。

我要做的是用复合 DataKey 装饰 class。