1

有沒有可能在客戶端的查詢中包含子實體? 我正在使用RIA Services進行Silverlight應用程序,它是一個DomainService和EntityFramework,用於我的數據庫訪問。 爲了在爲數據調用DomainService時獲取關聯實體,我必須使用[Include]屬性修改DomainService的元數據,並在DomainService上使用Include()方法。 (如ObjectContext.Parent.Include(「孩子」))DomainService:.Include()在客戶端

不過,我覺得自己像一噸的在我的DomainService每個實體獲取相關數據的所有不同的組合方式結束了,因爲有時候我你要用一個用戶和相關作用,有時我只想獲取用戶沒有任何關聯的數據等等...

據一些RIA教程,建議使用給定的功能通過表達式樹來修改客戶端的查詢。 有什麼方法可以在客戶端上而不是DomainService的get-method? 在使用DomanServices時,我覺得這一定是一個常見問題?

在我的研究期間,我偶然發現了一個類似的問題,但沒有任何答案,另一個線程有人說這是不可能的。但是這個答案發佈於2009年4月左右,從那以後發展有很多變化。

謝謝

回答

0

您可以在服務器上查詢方法。比方說您有服務器驗證碼:

public IQueryable<Employee> GetEmployeesSorted() 
{ 
    return from Employee emp in ObjectContext.Employees 
    orderby emp.Title, emp.HireDate 
    select emp; 
} 

,你可以在客戶端使用這樣

EmployeeContext context = new EmployeeContext(); 

    EntityQuery<Employee> query = 
     from emp in context.GetEmployeesSortedQuery() 
     where emp.SalariedFlag == true 
     select emp; 

希望這會有所幫助。

+0

謝謝你真的很快回答。 我知道這一點,但用於加入關聯實體的Include()方法只能直接在DomainService中使用ObjectQuery。 問題是我不想更改DomainService代碼。 最好的是,如果我可以堅持生成的代碼,並在查詢客戶端執行所有修改操作。 – Christoph 2010-12-22 14:29:19