2011-01-14 61 views
0

我有一個服務方法寫入了Silverlight 4的應用程序如下:具有主 - 細節Linq-to-entities查詢的WCF服務方法的返回類型應該是什麼?

[OperationContract] 
    public List<string> GetAll() 
    { 
     GearsLtdEntities ge = new GearsLtdEntities(); 
     var query = from a in Employees 
        join b in Depts 
        on a.DeptID equals b.DeptId 
        group a by b.DeptId into c 
        select new 
        { 
         DeptId = c.Key, 
         Name = 
           from cg in c 
           group cg.Name by cg.Name into g 
           select new 
           { 
            Name = g.Key 
           } 
        }; 

     return query; 
} 

,我想以這種方式返回的數據:

alt text

現在查詢工作正常時,我在LINQPad中獨立運行它,但當我感到困惑時,如何從該方法返回結果。該方法類型應該是什麼?我嘗試過嘗試過IEnumerable,然後我嘗試了IEnumerable,也嘗試過爲此專門創建的類DeptEmployee,但似乎沒有任何工作。請幫忙!!我查找了預測和WCF數據服務,但是找不到一個完整的例子來演示這些,我看到的是片段和片段,這些都不能幫助我得到我想要的。所以任何人都可以指向一個完整的工作示例,在WCF和SL中使用主 - 細節查詢和linq到實體,然後從服務方法返回結果?

回答

1

你有你的EDMX /設計師EmployeesDepts之間的關係? (你應該!)

爲什麼不返回Depts的集合,其中每個Dept都有自己的Employees收藏?

[OperationContract]  
public List<Depts> GetAll() 
{   
    GearsLtdEntities ge = new GearsLtdEntities();   
    return ge.Depts.Include("Employees").ToList(); 
} 

Silverlight可以輕鬆地從對象中檢索相關屬性。

,我不會這樣做的唯一原因是,如果任一EmployeeDept包含你不想通過線路發送數據的顯著塊。如果是這種情況,則創建簡化類來表示這兩個對象。

+0

謝謝,這工作! – 2011-01-20 18:21:13

1

這是一個匿名類型,所以你需要使用投影。我認爲這篇文章會有所幫助。謝謝。 http://programming4.us/database/96.aspx

+0

它沒有工作。我停留在EDMX文件的XML編輯中,我必須添加正確的QueryView和EntityMapping。無論我嘗試什麼,它都會在XML編輯器中爲實體提供錯誤。有人可以幫我起草一個實體定義,用EmpName來分組DeptId的內容嗎? – 2011-01-18 12:52:49

相關問題