Welcome

首页 / 软件开发 / .NET编程技术 / RIA服务与关系型数据

RIA服务与关系型数据2011-01-22 博客园 焦炜译正如我们都有原罪,当你看一些技术演示的时候,大多数例子演示的都是单表的解决方案。你还能记得你上次开发单表系统是什么时候吗?

在RIA服务的演示中,大多数也都是单表的例子。那么如何才能通过RIA检索关系型(主/从结构)数据呢?我使用VS2010、Silverlight 4和WCF RIA 服务预览版来演示下面的例子。我还使用了Chinook(直升机)示例数据库,这是我最喜欢使用的简单关系型数据示例之一。

创建附带RIA服务的项目

这很容易,你只要创建一个新的Silverlight项目,并确保选中了“启用.NET RIA服务”(没错,在对话框中它不叫WCF)。程序可以通过点击一个简单的按钮来检索艺术家及其相关专辑。这些是初始的XAML:

1: <Grid x:Name="LayoutRoot" Background="White">
2: <StackPanel Width="400">
3: <Button Content="Get Artist Information" x:Name="GetArtistButton" Click="GetArtistButton_Click" />
4: <StackPanel Orientation="Horizontal">
5: <StackPanel x:Name="ArtistsContext">
6: <StackPanel Orientation="Horizontal">
7: <TextBlock Text="Artists: " />
8: <TextBlock Text="{Binding ElementName=ListOfArtists, Path=Items.Count}" />
9: </StackPanel>
10: <ListBox x:Name="ListOfArtists" Width="200" Height="300" DisplayMemberPath="Name" ItemsSource="{Binding}"/>
11: </StackPanel>
12: <StackPanel x:Name="AlbumsContext">
13: <StackPanel Orientation="Horizontal">
14: <TextBlock Text="Albums: " />
15: <TextBlock Text="{Binding ElementName=ListOfAlbums, Path=Items.Count}" />
16: </StackPanel>
17: <ListBox x:Name="ListOfAlbums" DisplayMemberPath="Title" ItemsSource="{Binding}" Width="200" Height="300"/>
18: </StackPanel>
19: </StackPanel>
20: </StackPanel>
21: </Grid>

现在我们要在服务器端创建相关模型和被调用的域服务。我用实体框架(Entity Framework,需.NET 4)创建出来的模型看起来像这样: