2011-08-04 83 views
0

我使用WCF DataSerice和EF4.1代碼優先(C#)。DataServiceContext&Linq:只選擇繼承對象

我有2個實體:從Person類

我想從DbSet者的User對象繼承 1人 2.用戶。我怎樣才能做到這一點? 後來我查詢dataervice這樣的:

service.CreateQuery<User>("DbPersons").OfType<User>().Execute(); 

我得到一個例外是OfType方法不受DataService的背景支持。

將Linq表達式轉換爲URI時出錯:不支持'OfType'方法。

+0

什麼的數據服務版本是您使用。 .NET 4.0附帶的標準版本不支持'OfType'運算符。 –

+0

嗨,我已經嘗試過任何版本(包括CTP2) – DolceVita

+0

您是否在6月份的CTP上試用過它? http://blogs.msdn.com/b/astoriateam/archive/2011/06/30/announcing-wcf-data-services-june-2011-ctp-for-net4-amp-sl4.aspx –

回答

1

好的,通過添加服務操作方法解決。 看到這裏http://msdn.microsoft.com/en-us/library/cc668788.aspx

這裏的解決方案是我的代碼:

 public static void InitializeService(DataServiceConfiguration config) 
    { 
     config.SetServiceOperationAccessRule("DbUsers", ServiceOperationRights.AllRead); 
    } 

    [WebGet] 
    public IQueryable<User> DbUsers() 
    { 
     return CurrentDataSource.DbPersons.OfType<User>(); 
    } 

,並在您的客戶端應用程序發送請求和往常一樣:

service.CreateQuery<User>("DbUsers").Execute();