J'essaie d'obtenir une relation de plusieurs à travailler dans RIA/Silverlight, mais je n'arrive pas à comprendre comment.Silverlight RIA beaucoup à beaucoup ne fonctionne pas
Ma base de données ressemble à ceci ...
Stores Parts StoreParts
-------- ------- ----------
ID ID StoreID
StoreName PartName PartID
créer un Entity Data Model sur cette base de données.
Mon XAML ressemble à ceci
<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>
Mon code XAML derrière:
StoreContext storeContext = new StoreContext();
accordion2.ItemsSource = storeContext.Stores;
storeContext.Load(storeContext.GetStoresQuery());
Mon RIA DomainService:
[EnableClientAccess()]
public class StoreService : LinqToEntitiesDomainService<MenuTemp2Entities>
{
public IQueryable<Store> GetStores()
{
return this.ObjectContext.Stores.Include("Parts");
}
}
Et, enfin, mes métadonnées 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; }
}
}
Le nom de magasin arrive bien, mais il semble qu'il n'assigne pas les pièces en tant que sous-table au magasin. Il retourne seulement 1 partie par magasin dans l'ordre où ils sont stockés dans la table des pièces. Il ne semble pas utiliser la relation StoreParts du tout.
Des idées?
Avez-vous déclaré les métadonnées pour 'Part'? De plus, je pense qu'il y a d'autres problèmes avec votre classe de métadonnées - j'ai fait quelque chose de similaire moi-même, mais le code est au travail, donc je ne peux pas vérifier et je préfère ne pas vous donner de fausses informations. – ChrisF
Les métadonnées sont ce qui a été généré automatiquement par Visual Studio, sauf lorsque j'ai ajouté les balises [Include] et [Association]. Même si j'ai créé des métadonnées pour Part, où dois-je dire à Part pour utiliser les métadonnées? – Scottie