0

我已经看了很长一段时间的片段和教程,但我找不到完整的答案——只有一些零碎的东西。

我有一个包含 3 个表的数据库:

产品:

  • id唯一标识符
  • 名称nvarchar(50)

类别:

  • id唯一标识符
  • 名称nvarchar(50)

产品分类:

  • fk_product 唯一标识符
  • fk_category 唯一标识符

显然,这涉及到多对多的关系——一个产品可以有多个类别,一个类别可以应用于多个产品。

下一步是从数据库生成 ADO.NET 模型和域服务。这非常简单,我认为是标准的。

现在在视图中,我使用了 Silverlight 4 Toolkit 提供的 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 中为具有多对多关系的属性显示启用多选的列表框?

4

1 回答 1

0

这是这个问题的可能重复

显然,RIA 服务不支持多对多(EF 模型删除关联表)。

您需要包括关联表。我认为关联表仅包含在 EF 模型中,如果它包含任何额外的字段(除了 2 个外键),或者您打破其中一个关联并自己管理多对多关系的一侧。

于 2010-09-24T10:00:24.490 回答