2014-04-29 51 views
0

我在MSDNs walkthrough.的幫助下創建了RIA服務解決方案我有兩個顯示兩個表中數據的數據網格。一個數據網格顯示材料,另一個數據網格顯示組成部分(瑞典語Sortiment)。但是我想合併這兩個表格,因爲零部件表中的零部件ID也在材料表中表示。我如何將兩個表中的列合併到一個數據網格中並在Silverlight中使用連接?

我該如何將兩個表中的列合併到一個數據網格中並在Silverlight中使用連接?

public partial class MainPage : UserControl 
    { 
     private DomainService1 _materialContext = new DomainService1(); 
     private DomainService1 _sortimentContext = new DomainService1(); 

    public MainPage() 
    { 
     InitializeComponent(); 


     #region Material 
     EntityQuery<Material> query = 
     from c in _materialContext.GetMaterialQuery() 
     where c.tillverkningsorderID.Equals(1) 
     orderby c.materialID 
     select c; 

     //LoadOperation<Material> loadOp = this._materialContext.Load(this._materialContext.GetMaterialQuery()); 
     LoadOperation<Material> loadOp = this._materialContext.Load(query); 
     myMaterialGrid.ItemsSource = loadOp.Entities; 
     #endregion 


     #region Sortiment 
     LoadOperation<Sortiment> loadOp_S = this._sortimentContext.Load(this._sortimentContext.GetSortimentQuery()); 
     sortiment.ItemsSource = loadOp_S.Entities; 
     #endregion 





    } 

編輯:這是一個一對多的關係

回答

0

MaterialSortiment之間一比一的關係?所以你想要一個Sortiment對象在你的材料表中有一行中的所有額外的列?

如果是這樣,可能最簡單的方法是創建一個數據對象,它是這兩個表的組合。如果你使用的是EntityFramework,這叫做Entity Splitting,這意味着你的模型可以有一個新的單一的實體,叫做無論你如何,它表示兩個SQL表的連接。

+0

是的,這是一對一的關係。能夠編輯和保存數據庫中的更改很容易嗎?我也可以在數據網格中使用下拉列表。 – DeveloperDahak

+0

如果您使用EF進行編輯/保存,那麼是的...它就像以前一樣簡單。如果你將這些函數映射到存儲過程,那麼顯然你需要手動對其進行排序。它的要點是,不是有兩種類型的實體('Material'和'Sortiment'),你的模型將有一種類型的實體('MaterialWithSortiment'),所以你的所有數據操作都在這種新類型上。這是*跨多個表分割*實體*。只要您在模型中獲得了映射權,EF就會照顧通常的污染物。 – Mashton

+0

沒有抱歉。這是一對多的關係! – DeveloperDahak

相關問題