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關係。
任何想法?
您是否爲'Part'聲明瞭元數據?另外我認爲你的元數據類有其他的錯誤 - 我自己做了類似的事情,但是代碼在工作,所以我不能仔細檢查,我寧願不給你錯誤的信息。 – ChrisF 2010-11-13 17:42:21
元數據是Visual Studio自動生成的內容,除了添加[Include]和[Association]標籤的地方。即使我爲Part創建了元數據,我會在哪裏告訴Part使用元數據? – Scottie 2010-11-13 20:52:45