2010-06-29 41 views
0

我一直在尋找片段和教程很長一段時間,但我找不到完整的答案 - 只是一些零散的部分。Silverlight 4 RIA Services,SIlverlight 4工具包控件和數據庫中的多對多關係

我有3個表數據庫:

產品:

  • ID唯一標識符
  • 爲nvarchar(50)

類別:

  • ID唯一標識符
  • 名稱爲nvarchar(50)

產品分類:

  • fk_product唯一標識符
  • fk_category唯一標識符

很明顯,涉及到多對多的關係 - 一個產品可以有多個類別,一個類別可以應用於多個產品。

下一步是從數據庫中生成ADO.NET模型和域服務。這非常簡單,我認爲標準。

現在在視圖中,我使用了由Silverlight 4工具包提供的DataGrid和DataForm。

<toolkit:DataForm ItemsSource="{Binding Data, ElementName=ProductsSource}" Name="dataForm1" AutoCommit="True" /> 

<sdk:DataGrid x:Name="dataGird" ItemsSource="{Binding Data, ElementName=ProductsSource}" AutoGenerateColumns="True" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" /> 

數據源ProductsSource被定義爲這樣:

<riaControls:DomainDataSource Name="ProductsSource" QueryName="GetProductsQuery" AutoLoad="True"> 
     <riaControls:DomainDataSource.SortDescriptors> 
      <riaControls:SortDescriptor Direction="Ascending" PropertyPath="title" /> 
     </riaControls:DomainDataSource.SortDescriptors> 
     <riaControls:DomainDataSource.DomainContext> 
      <domain:PortfolioDomainContext /> 
     </riaControls:DomainDataSource.DomainContext> 
    </riaControls:DomainDataSource> 

現在:什麼是這個多到多的關係呈現數據的最佳方式在視圖中?有沒有辦法在DataForm中顯示一個具有多對多關係的屬性的多選列表框?

回答

0

這是this question

一個可能的重複顯然許多一對多(其中EF模型中刪除關聯表)沒有在RIA服務支持。

您需要包含關聯表。我認爲一個關聯表只包含在EF模型中,如果它包含任何額外的字段(2個外鍵以外),或者你破壞了其中一個關聯並自己管理多對多關係的一方。