2012-07-27 82 views
0

我發現了很多關於這個問題的解釋,但沒有什麼真正幫助我。事情很簡單。我有兩個表在我的dataModel:Events和TimeStamps,都有字段EntryID,這是他們之間的關係(表實際上是視圖,我不能在DB上執行更改,我只能查詢他們)。在我的domainService,我有創建的方法從每個表中獲取數據。到目前爲止,我只能從一個表中填充數據,但我真正需要的是從兩個表中顯示數據。在T-SQL它會是這樣的:WCF RIA加入兩張表

Select e.EntryID,t.closed_time 
    from Events e inner join TimeStamps t 
    on e.EntryID=t.EntryID 

所以我要展示我的DataGrid中Entry_ID和closed_time.I感謝您對解決我的問題的幫助

我嘗試了新的自定義類

public class CustomTable 
    { 
     public string EntryId { get; set; } 
     public int closed_time { get; set; } 
    } 

    public IQueryable<CustomTable> GetJoined() 
    { 
     return (from i in this.ObjectContext.Events     
       join p in this.ObjectContext.TimeStamps p 
       on i.Entry_ID equals p.Entry_ID 
       select new CustomTable 
       { 
        EntryId = i.Entry_ID, 
        closed_Time = p.Closed_TIME 
       }); 
    } 

這是額外的代碼我加了我自己,我敢肯定缺少的東西,在我的service.cs

+0

你在想什麼(代碼)?您通過RIA傳輸的返款類型是什麼? – 2012-07-27 13:01:08

+0

查看上述附加信息 - 感謝 – Avrum 2012-07-27 14:32:19

+1

當您對GetJoined()方法進行RIA調用時會發生什麼?首先將返回值賦值給var(而不是立即返回),然後在調試器中對其進行檢查(可以展開結果),以確定是否實際從數據庫中獲取數據。 – 2012-07-27 15:38:03

回答

0

加入這個方法和類本身這是決賽C頌和程序完成後,不要忘了在每個步驟之後生成項目:

1- Myproject.Web下開設了一個新的類(添加 - >新項目 - >類)

namespace Myproject.Web 
{ 

    public class CustomTable 
    { 
     [Key] 
     public string EntryId { get; set; } 
     public int closed_Time { get; set; } 
    } 
} 

2 - 增加對IncidentService.cs:

public IQueryable<CustomTable> GetJoined() 
{ 
    return (from i in this.ObjectContext.Events     
      join p in this.ObjectContext.TimeStamps p 
      on i.Entry_ID equals p.Entry_ID 
      select new CustomTable 
      { 
       EntryId = i.Entry_ID, 
       closed_Time = p.Closed_TIME 
      }); 
} 

3,增加了關於Mypage.xaml.cs

public MyPage() 
{ 
    InitializeComponent(); 


    this.dataGrid1.ItemsSource = _IncidentContext.CustomTables; 
    _IncidentContext.Load(_IncidentContext.GetJoinedQuery()); 



    DataGridTextColumn entry = new DataGridTextColumn(); 
    entry.Binding = new System.Windows.Data.Binding("EntryId"); 
    entry.Header = "Entry Id"; 

    DataGridTextColumn closed = new DataGridTextColumn(); 
    closed.Binding = new System.Windows.Data.Binding("closed_Time"); 
    closed.Header = "Closed Time"; 

    dataGrid1.Columns.Add(entry); 
    dataGrid1.Columns.Add(closed); 

} 

我希望這將有助於其他同樣的問題,我花了3天的時間來研究這個解決方案!