Silverlight RIA много ко многим не работает - PullRequest
1 голос
/ 13 ноября 2010

Я пытаюсь установить отношения многие-ко-многим в RIA / Silverlight, но не могу понять, как.

Моя база данных выглядит так ...

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.

Есть идеи?

1 Ответ

1 голос
/ 17 ноября 2010

Взгляните на этот проект Codeplex, он может помочь.

http://m2m4ria.codeplex.com/

...