我有以下WCF數據服務:如何從Silverlight應用程序調用Wcf數據服務中的自定義方法?
public class WcfDataService : DataService<WcfDataServiceContext>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
config.UseVerboseErrors = true;
}
[WebGet]
public IQueryable<Person> GetPeopleByName(string name)
{
WcfDataServiceContext context = this.CurrentDataSource;
var match = from p in context.People
where p.FirstName == name
select p;
return match;
}
我可以從瀏覽器訪問自定義的方法是這樣的:
http://127.0.0.1:8080/DataService/WcfDataService.svc/GetPeopleByName?name='Daniel'
我如何調用該方法,並從獲得的人該列表Silverlight應用程序?
我正在使用Visual Studio 2012,Silverlight 5,.NET Framework 4.0。
對不起,晚了。您是否有理由添加此服務,還是隻是示例?關於OData的真棒部分是它可以處理所有標準查詢(上面的例子)。在這種情況下,以下URL將返回相同的內容:「http://127.0.0.1:8080/DataService/WcfDataService.svc/People?$filter=FirstName eq'Daniel''。相應地,客戶端的LINQ組件可以讓您輕鬆地編寫該查詢:'context.People.Where(p => p.FirstName ==「Daniel」)'。如有必要,我可以詳細說明。 –
你好馬克。謝謝您的回覆。我在客戶端實現了查詢。我目前在使用Silverlight中的string.Contains時遇到了問題。原始問題在這裏:http://stackoverflow.com/questions/13057260/error-in-wcf-data-service-when-using-string-contains-within-linq-statement-from 如何實現string.Contains生成substringof('text',DisplayName)eq true? – Daniel