2010-11-13 68 views
1

我想在RIA/Silverlight中獲得多對多的關係,但我似乎無法弄清楚如何。Silverlight RIA多對多不工作

我的數據庫看起來像這樣...

Stores  Parts  StoreParts 
-------- ------- ---------- 
ID   ID   StoreID 
StoreName PartName PartID 

我這個數據庫上創建一個實體數據模型。

我的XAML看起來像這樣

<toolkit:Accordion Background="White" BorderThickness="1" Height="503" HorizontalAlignment="Left" Margin="207,32,0,0" Name="accordion2" SelectionMode="ZeroOrMore" VerticalAlignment="Top" Width="181"> 
    <toolkit:Accordion.ContentTemplate> 
     <DataTemplate> 
      <ListBox BorderThickness="0" ItemsSource="{Binding Parts}"> 
       <ListBox.ItemTemplate> 
        <DataTemplate> 
         <TextBlock Text="{Binding PartName}" /> 
        </DataTemplate> 
       </ListBox.ItemTemplate> 
      </ListBox> 
     </DataTemplate> 
    </toolkit:Accordion.ContentTemplate> 
    <toolkit:Accordion.Effect> 
     <DropShadowEffect BlurRadius="8" /> 
    </toolkit:Accordion.Effect> 
    <toolkit:Accordion.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding StoreName}" /> 
      </StackPanel> 
     </DataTemplate> 
    </toolkit:Accordion.ItemTemplate> 
</toolkit:Accordion> 

我的XAML代碼隱藏:

StoreContext storeContext = new StoreContext(); 
accordion2.ItemsSource = storeContext.Stores; 
storeContext.Load(storeContext.GetStoresQuery()); 

我RIA的DomainService:

[EnableClientAccess()] 
public class StoreService : LinqToEntitiesDomainService<MenuTemp2Entities> 
{ 
    public IQueryable<Store> GetStores() 
    { 
     return this.ObjectContext.Stores.Include("Parts"); 
    } 
} 

最後,我RIA元

[MetadataTypeAttribute(typeof(Store.StoreMetadata))] 
public partial class Store 
{ 
    internal sealed class StoreMetadata 
    { 
     // Metadata classes are not meant to be instantiated. 
     private StoreMetadata() 
     { 
     } 

     public int ID { get; set; } 

     [Include] 
     [Association("StoreParts", "ID", "ID")] 
     public EntityCollection<Part> Parts { get; set; } 

     public string StoreName { get; set; } 
    } 
} 

StoreName通過很好,但它似乎沒有將零件作爲子表分配給商店。它只按每個商店的順序返回1個零件,它們存儲在零件表中。它似乎沒有使用StoreParts關係。

任何想法?

+0

您是否爲'Part'聲明瞭元數據?另外我認爲你的元數據類有其他的錯誤 - 我自己做了類似的事情,但是代碼在工作,所以我不能仔細檢查,我寧願不給你錯誤的信息。 – ChrisF 2010-11-13 17:42:21

+0

元數據是Visual Studio自動生成的內容,除了添加[Include]和[Association]標籤的地方。即使我爲Part創建了元數據,我會在哪裏告訴Part使用元數據? – Scottie 2010-11-13 20:52:45

回答