WCF Data Services客户端访问

上一篇http://www.cnblogs.com/2018/archive/2010/10/17/1853384.html 

讲述了查询的相关语法和例子,如果在程序中如何使用这些发布的服务呢?下面对在代码中访问这些服务的方法进行一下汇总

客户端访问

查询


这些查询中可以结合上文的查询语法等使用

Ø 浏览器地址:输入地址,GET请求直接进行

Ø JavaScipt库:如ExtJS、DOJO、MS AJAX等支持JSON处理的JS库

Ø Service Reference引用

常用的形式,IDE直接添加引用,使用代理对象和上下文处理

//Generic泛型
                    {
                           DataServiceContext ctx = new DataServiceContext(u);
                           var q = ctx.Execute<Order>(new Uri("/Orders(10402)", UriKind.Relative));
                           foreach (var t in q)
                           {
                                  Console.WriteLine(t.OrderDate);
                           }
                    }
              
//Client Proxy代理
                    {
                           NorthwindEntities ctx = new NorthwindEntities(u);
                           var q = from c in ctx.Suppliers select c;
                           foreach (var t in q)
                           {
                                  Console.WriteLine(t.City);
                           }

Ø HTTP协议支持处理

       HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url + "/Orders(10402)");
                           req.Method = "GET";
                           req.Accept = "application/json";
                           using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
                           {
                                  using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
                                  {
                                         Console.WriteLine(sr.ReadToEnd());
                                  }
                           }
 
                           req = (HttpWebRequest)WebRequest.Create(url + "/Orders(10402)");
                           req.Method = "GET";
                           req.Accept = "application/atom+xml";
                           using (HttpWebResponse resp = (HttpWebResponse)req.GetResponse())
                           {
                                  using (StreamReader sr = new StreamReader(resp.GetResponseStream()))
                                  {
                                         XmlDocument xml = new XmlDocument();
                                         xml.Load(sr);
 
                                         Console.WriteLine(xml.InnerXml);
                                  }
                           }

增删改


Ø HTTP形式

参考MSDN的规定传递参数和请求形式即可,处理有些麻烦

Ø Service Reference引用

比较常用的形式,具体参考“修改数据”一节

需要处理并发冲突:

DataServiceRequestException

· Entity Framework provider - In the data model, the ConcurrencyMode attribute of a property that is part of the concurrency token for an entity type is set to Fixed.

· Reflection provider - The ETagAttribute is applied to the data class that is an entity type. This attribute declares the concurrency token based on the supplied property names.

修改数据

Insert


HTTP POST

Content-Type:需正确设置


Update


HTTP Put/Merger


Delete


HTTP Delete

例子
需要修改数据对象,注意服务端需要设置正确的属性,如:
            config.SetEntitySetAccessRule("*", EntitySetRights.All);
            config.SetServiceOperationAccessRule("*", ServiceOperationRights.All);
            config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;

客户端通过代理访问:

//Client Proxy

{

NorthwindEntities ctx = new NorthwindEntities(u);

var q = from c in ctx.Suppliers select c;

foreach (var t in q)

{

Console.WriteLine(t.City);

}

///添加

var cust = new Customer()

{

CustomerID = "Test1",

Address = "Beijing",

City = "Peking",

CompanyName = "demo",

ContactName = "test",

ContactTitle = "mr.",

Country = "China",

Fax = "123",

Phone = "111",

PostalCode = "456",

Region = "HD"

};

ctx.AddToCustomers(cust);

ctx.SaveChanges();

///更新

var upCust = (from c in ctx.Customers where c.CustomerID == cust.CustomerID select c).FirstOrDefault();

upCust.ContactName += "-UPD";

ctx.UpdateObject(upCust);

ctx.SaveChanges();

///删除

upCust = (from c in ctx.Customers where c.CustomerID == cust.CustomerID select c).FirstOrDefault();

ctx.DeleteObject(upCust);

ctx.SaveChanges();

可见,在客户端可以使用LINQ语法进行查询

除了客户端,服务端也有很强的支持,下文再说。

时间: 2024-09-24 15:17:29

WCF Data Services客户端访问的相关文章

WCF Data Services查询

上一篇文章http://www.cnblogs.com/2018/archive/2010/10/15/1852579.html介绍了WCF Data Service的基础知识,下面介绍一下查询 查询在WCF Data Services十分的方便,更强的功能在这些类别中可以看到WCF Data Service的超级威力.可以直接在浏览器中输入查询表达式等进行访问 直接使用例子可从http://dskit.codeplex.com下载 查询表达式Query Expressions 一般的查询表达式

WCF Data Services/ RIA Services概念

WCF Data Services WCF Data Services (or Data Services for short) is another data-centric communication technology built on the WCF stack that exposes data to clients as JSON- or ATOM-serialized RESTful resources using the OData protocol. The OData pr

WCF Data Services实例:ASP.net AJAX访问

本文参考 Code.msdn的例子,在此基础上实现了一个参考例子,代码放在了: http://dskit.codeplex.com 如果想在Asp.net MVC应用以JavaScript中访问WCF Data Service服务,以下是使用Microsoft AJAX Library库进行处理的例子 var dataContext; var queryObject, queryObject1; Sys.require([Sys.components.dataView, Sys.componen

WCF RIA Services 客户端、服务端的处理方法和例子

Silverlight客户端访问 1. 首先Project Link到服务端项目,Build服务端项目是在客户端项目的Generated_Code和其他一些目录下会生成相关的代码 2. 使用代码或XAML(DomainDataSource )访问服务 xmlns:domain="clr-namespace:RIA.Web.Services"Title="Demo Page" Style="{StaticResource PageStyle}" x

EntityFramework 5.0 + WCF Data Service 访问数据集时报错

问题描述 EntityFramework5.0+WCFDataService访问数据集的时候提示访问http://localhost/WcfService1/NorthwindService.svc正常访问http://localhost/WcfService1/NorthwindService.svc/Products则报错,查看跟踪文件提示无法将通信对象System.ServiceModel.Channels.TransportReplyChannelAcceptor+TransportRe

WCF Data Service使用总结 (一)了解OData协议

最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的框架.可以很方便地通HTTP来访问数据库,如果你是做富客户端开发的,用它绝对能大大减少你的工作量.出于对这个框架的喜爱,于是把自己的一些使用经验写下来,并且希望有更多的人能够用上. OData简介 说起 WCF Data Service ,不得不说的是 OData.对于一个标准的 Web 服务,它往

更强悍的Silverlight: WCF RIA Services

如果你安装了 VS 2010 的 Silverlight 4 开发工具,会发现一项重量级的安装项目,WCF RIA Services,用于Silverlight数据访问服务,比WCF和ADO.NET Data Service和Web服务都要简单. 在一个三层架构的应用程序中,中间层介于表示层和数据层之间,你所写的业务逻辑和数据验证都将在中间层出现.创建拥有良好用户体验的RIA应用,你需要客户端和服务端有着相同的业务规则,因此在客户端和服务端保证同步的中间层变得至关重要.WCF RIA Servi

艾伟:为什么微软要推 ADO.NET Data Services Framework

微软在 .NET 3.5 SP1 平台上,推了一组新的数据访问 Framework,叫做 ADO.NET Data Services.微软怕程序员太闲吗?为什么要创造 ADO.NET Data Services?Web Service 和 WCF 不就很好用了吗?本帖整理一些研讨会及网络上大内高手的观点,并提供一个可在 VS 2008 SP1 上执行的示例给大家下载参考:但本帖不提供 step by step 实作教学,因为网络上已经有一堆这种文章了 (参考本帖最下面的「参考文件」第 6.第 7

学习使用ADO.NET Data Services (ADO.NET 数据服务框架)

ADO.NET Data Services Framework是在.NET Framework 3.5 SP1新推出的扩充功能,这个功能和概念 在以前的.NET 1.0-.NET3.5 技术中都没有出现的新概念,它主要用途是可以很容易的将数据库服务公开 在网络上,然后透过URL网址就可以对数据库进行CRUD的操作.ADO.NET Data Services能通过一个REST化 的方式将数据以Web上的数据服务展示.使得应用可以以数据服务的方式展现数据,然后被应用在企业网 络和互联网上的Web客户