2009-09-23 81 views
1

目前我有一個C#silverlight商業應用程序。該應用程序在Asp.net中使用ADO.Net實體框架和一個域服務類來讀/寫我的sql服務器數據庫。C#Silverlight - 定義數據庫表之間的連接?

數據庫的結構如下。我有三張桌子。工作,審計&圖片。一個工作可以有很多審計,一個圖像可以有很多審計 - 一個相當簡單的結構。在我的Silverlight客戶端中,我有一個綁定到作業表的數據網格,我也有一個列表框,在其中填充與數據網格中所選作業直接相關的審覈項目列表。爲了做到這一點,我使用datagrids選擇已更改的事件,以確保每次在數據網格中更改作業選擇時,都會爲每個作業的審覈列表框填充該特定的審覈集。這樣做的代碼如下:

private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 

       var auditJob = dataGrid1.SelectedItem as Job; 
       auditsList.ItemsSource = auditJob.Audit; 
} 

正如你可以看到它不是火箭科學,當然這種方法可行,因爲一個工作與審計之間的許多關係。 (一份工作,許多審計)。我想做一些類似的事情,但與圖像表(不同的關係結構)。這一次,我想用我的Image表的內容填充一個列表框,這樣當用戶在數據網格中選擇一個特定的作業時,它會顯示該作業的審覈和圖像列表。但是,由於工作和形象之間沒有直接聯繫,我不確定如何做到這一點,但希望採用類似於上面所用方法的方法。由於一個作業具有多個審覈,而一個圖像具有多個審覈,因此審覈表包含其自己的AuditID主鍵,以及JobID外鍵和ImageID外鍵。我的問題是,如何設置Job和Image之間的鏈接以便爲每個單獨作業生成圖像列表?

幫助將不勝感激

回答

0

我覺得這是你的問題的一個很好的說明: http://microapplications.com/blog/archive/2009/04/18/329.aspx

本質上講,你可以創建一個包含工作,形象和審計屬性的新類並返回它你的DomainService。在服務器端,您可以拼湊一些LINQ代碼,從所有3個表中選擇相關項目。

儘管這只是一個解決方案,但您也可以在selectionchanged處理程序中編寫一些代碼,以便加載與所涉及作業相關的圖像。

+0

很好的答案,但是我現在不能鍛鍊如何去查詢數據,因爲我的類沒有GetEnumerator(),因此我不能使用foreach循環:-(任何想法? – Goober 2009-09-24 09:16:18