代码改变世界

Silverlight学习点滴之一——使用WCF RIA构建应用

2011-06-30 10:29  贼寇在何方  阅读(2041)  评论(5编辑  收藏  举报

WCF RIA是一项很有意思的技术,能够让客户端的Silverlight直接访问服务端的数据库,而不需要创建新的WCF项目(当然,其底层还是通过WCF实现的),就像操作本地的数据库一样。

不过,WCF RIA只能用于Silverlight。相关安装包在Silverlight 4.0中包含。

我选择创建的是Silverlight Businuss,参考的是这个视频:.NET RIA Services Intro

 

1. 创建Silverlight Businuss Application

我创建的项目名称是DataManageSystem。创建成功后,在解决方案目录下,会生成DataManageSystem和DataManageSystem.Web两个项目。
在这里,推荐使用火狐浏览器进行调试。Chrome没法禁止缓存,常常每次修改完运行调试,运行的还是老版本的代码。IE8么,实在是卡,动不动就假死,只好算了。

Silverlight Business界面布局

 

2.  添加数据库访问层
这里我选的Entity Framework 4.1。因为数据库已经建了表了,所以选择Database First方式,在DataManageSystem.Web项目中添加新项目,选择ADO.Net 实体数据模型。我对表名全部使用了复数形式,所以勾选“确定所生成的对象名称的单复数形式”,这样能够映射得到单数形式的类名。

完了记得生成一下项目,这一步非常重要!

 

 

3. 添加Service
在DataManageSystem.Web项目中添加新项目,选择Domain Service Class。勾选对应的实体,是否启用编辑就随意了。
上一步如果没有生成项目的话,这边的实体类是不会显示的! 

 

4. 在客户端添加新的视图
在客户端的View当中添加Silverlight页"DataSourceList.xaml"

添加"System.Windows.Controls.Data"的引用,是这个Dll提供了DataGrid控件。

编辑Xaml,添加命名空间:

xmlns:data="clr-namespace:System.Windows.Controls;
assembly=System.Windows.Controls.Data"


添加控件DataGridView(记得加data前缀)。

<data:DataGrid x:Name="dataGrid" AutoGenerateColumns="False" IsReadOnly="True">
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="数据源类别"
Binding
="{Binding 数据源类别}"/>
<data:DataGridTextColumn Header="数据源版本"
Binding
="{Binding 数据源版本}"/>
<data:DataGridTextColumn Header="摘要"
Binding
="{Binding 摘要}"/>
<data:DataGridTextColumn Header="测图比例尺"
Binding
="{Binding 测图比例尺}"/>
<data:DataGridTextColumn Header="保密级别"
Binding
="{Binding 保密级别}"/>
</data:DataGrid.Columns>
</data:DataGrid>

 

转到后台代码,添加命名空间"DataManageSystem.Web",在页面Loaded事件中添加数据绑定的代码:

privatevoid Page_Loaded(object sender, RoutedEventArgs e)
{
var context
=new DataSourceContext();
dataGrid.ItemsSource
= context.DataSources;
context.Load( context.GetDataSourcesQuery() );
}

 

转到MainPage中,依样画葫芦,再加一个HyperlikeButton。其中NavigateUri改为"/DataSourceList", Content改为"数据页面"

 

最后生成以下,启动调试:

 

参考:.NET RIA Services Intro