概述 Silverlight 2 Beta 1版本发布了
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678yi.gif)
![](/icons/65678de.gif)
![](/icons/65678dou2.gif)
![](/icons/65678smhl.gif)
![](/icons/65678yi.gif)
![](/icons/65678yi.gif)
![](/icons/65678smhr.gif)
![](/icons/65678dou2.gif)
本文将简单介绍在Silverlight 2中如何
![](/icons/65678diaoyong.gif)
![](/icons/65678dou2.gif)
准备知识 由于ADO.NET Data Services是在ASP.NET 3.5 Extensions中
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678yi.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
![](/icons/65678dou.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/f5cc4d7a-3f6d-4e8f-a2b2-088a5745d78b.png)
ADO.NET Data Service允许应用
![](/icons/65678chengxu.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou2.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou2.gif)
简单举例 如果大家看了前面 3篇文章
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/40d344fa-7c3a-4dc8-9787-b2028ba27687.g<img src='/icons/65678if.gif' />)
建立完Silverlight 2项目的后
![](/icons/65678dou.gif)
![](/icons/65678yi.gif)
public
Post
{
public
Id { get;
; }
public
Title { get;
; }
public
Author { get;
; }
}
我们用Id作为Post![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678chengxu.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
public
Post
{
[DataWebKey]
public
Id { get;
; }
public
Title { get;
; }
public
Author { get;
; }
}
再添加![](/icons/65678yi.gif)
![](/icons/65678dou.gif)
![](/icons/65678yi.gif)
![](/icons/65678de.gif)
public
Blog
{
public Blog![](/icons/65678kh.gif)
{
_post.Add(
Post { Id = 1, Title = "
步
步学Silverlight 2系列(13):数据和通信的WebRequest", Author = "TerryLee" });
_post.Add(
Post { Id = 2, Title = "
步
步学Silverlight 2系列(12):数据和通信的WebClient", Author = "TerryLee" });
_post.Add(
Post { Id = 3, Title = "
步
步学Silverlight 2系列(11):数据绑定", Author = "TerryLee" });
_post.Add(
Post { Id = 4, Title = "
步
步学Silverlight 2系列(10):使用用户Control控件", Author = "TerryLee" });
_post.Add(
Post { Id = 5, Title = "
步
步学Silverlight 2系列(9):使用Control控件模板", Author = "TerryLee" });
_post.Add(
Post { Id = 6, Title = "
步
步学Silverlight 2系列(8):使用样式封装Control控件观感", Author = "TerryLee" });
}
List<Post> _post =
List<Post>
;
public IQueryable<Post> Posts
{
get {
_post.AsQueryable<Post>
; }
}
}
添加![](/icons/65678yi.gif)
![](/icons/65678dou.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/f5cc4d7a-3f6d-4e8f-a2b2-088a5745d78b.png)
实现服务
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
public
BlogDataService : WebDataService<Blog>
{
public
void InitializeService(IWebDataServiceConfiguration config)
{
config.SetResourceContainerAccessRule("*", ResourceContainerRights.AllRead);
}
}
现在我们![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/b8de78aa-cba6-4bf9-9606-ea5f4a23568a.png)
现在还看不到所有
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://localhost:8081/BlogDataService.svc/" ......>
<id>http://localhost:8081/BlogDataService.svc/Posts</id>
<updated />
<title>Posts</title>
<link rel="self" href="Posts" title="Posts" />
<entry adsm:type="TerryLee.SilverlightWithDataServiceDemoWeb.Post">
<id>http://localhost:8081/BlogDataService.svc/Posts(1)</id>
<updated />
<title />
<author>
<name />
</author>
<link rel="edit" href="Posts(1)" title="Post" />
<content type="application/xml">
<ads:Id adsm:type="Int32">1</ads:Id>
<ads:Title>
步
步学Silverlight 2系列(13):数据和通信的WebRequest</ads:Title>
<ads:Author>TerryLee</ads:Author>
</content>
</entry>
如果要查看某![](/icons/65678yi.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/0fda9534-b566-46be-ad8b-6a6f858eec3a.png)
当然还可以进行其他
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
![](/icons/65678de.gif)
![](/icons/65678dou2.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678yi.gif)
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Uri uri =
Uri("http://localhost:8081/BlogDataService.svc/Posts");
WebClient client =
WebClient
;
client.OpenReadCompleted
OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(uri);
}
void client_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e)
{
(e.Error
null)
{
}
}
我们可以使用LINQ to XML进行数据![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678yi.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678yi.gif)
![](/icons/65678dou.gif)
XmlReader reader = XmlReader.Create(e.Result);
XDocument postdoc = XDocument.Load(reader);
XNamespace xmlns = "http://www.w3.org/2005/Atom";
XNamespace ads = "http://schemas.microsoft.com/ado/2007/08/dataweb";
var posts = from x in postdoc.Descendants(xmlns + "entry")
select
Post
{
Id =
.Parse(x.Descendants(ads + "Id").First
.Value),
Title = x.Descendants(ads + "Title").First
.Value,
Author = x.Descendants(ads + "Author").First
.Value
};
Posts.ItemsSource = posts;
完成![](/icons/65678de.gif)
private void UserControl_Loaded(object sender, RoutedEventArgs e)
{
Uri uri =
Uri("http://localhost:8081/BlogDataService.svc/Posts");
WebClient client =
WebClient
;
client.OpenReadCompleted
OpenReadCompletedEventHandler(client_OpenReadCompleted);
client.OpenReadAsync(uri);
}
void client_OpenReadCompleted(object sender,OpenReadCompletedEventArgs e)
{
(e.Error
null)
{
XmlReader reader = XmlReader.Create(e.Result);
XDocument postdoc = XDocument.Load(reader);
XNamespace xmlns = "http://www.w3.org/2005/Atom";
XNamespace ads = "http://schemas.microsoft.com/ado/2007/08/dataweb";
var posts = from x in postdoc.Descendants(xmlns + "entry")
select
Post
{
Id =
.Parse(x.Descendants(ads + "Id").First
.Value),
Title = x.Descendants(ads + "Title").First
.Value,
Author = x.Descendants(ads + "Author").First
.Value
};
Posts.ItemsSource = posts;
}
}
完整![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678de.gif)
![](/icons/65678de.gif)
![](/icons/65678yi.gif)
![](/icons/65678dou2.gif)
![学Silverlight 2系列(17):数据和通信的ADO.NET Data Services](http://www.crazycoder.cn/WebFiles/20091/40d344fa-7c3a-4dc8-9787-b2028ba27687.g<img src='/icons/65678if.gif' />)
结束语 本文简单介绍了在Silverlight 2
![](/icons/65678diaoyong.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou.gif)
![](/icons/65678cuowu.gif)
![](/icons/65678de.gif)
![](/icons/65678dou.gif)
![](/icons/65678dou2.gif)
最新评论