1.选择数据
(这是采用GET方法)
localhost.NorthwindEntities context = new localhost.NorthwindEntities(
new Uri("http://localhost:1000/NorthwindService.svc/"));
//查询
var query = from c in context.Customers
where c.City.Equals("London")
select c;
Console.WriteLine(query.ToString());
foreach (var item in query)
{
Console.WriteLine(item.CompanyName);
}
这个查询,发给服务的查询字串是:
查询数据库的语法是
返回的数据是
HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Tue, 09 Feb 2010 12:33:14 GMT
X-AspNet-Version: 2.0.50727
DataServiceVersion: 1.0;
Cache-Control: no-cache
Content-Type: application/atom+xml;charset=utf-8
Content-Length: 7604
Connection: Close
xml version="1.0" encoding="utf-8" standalone="yes"?>
<feed xml:base="http://localhost:1000/NorthwindService.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<title type="text">Customers
title>
<id>http://localhost:1000/NorthwindService.svc/Customers
id>
<updated>2010-02-09T12:33:14Z
updated>
<link rel="self" title="Customers" href="Customers" />
<entry>
<id>http://localhost:1000/NorthwindService.svc/Customers('AROUT')
id>
<title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('AROUT')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('AROUT')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>AROUT
d:CustomerID> <d:CompanyName>Around the Horn
d:CompanyName> <d:ContactName>Thomas Hardy
d:ContactName> <d:ContactTitle>Sales Representative
d:ContactTitle> <d:Address>120 Hanover Sq.
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>WA1 1DP
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-7788
d:Phone> <d:Fax>(171) 555-6750
d:Fax>
m:properties>
content>
entry> <entry> <id>http://localhost:1000/NorthwindService.svc/Customers('BSBEV')
id> <title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('BSBEV')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('BSBEV')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>BSBEV
d:CustomerID> <d:CompanyName>B's Beverages
d:CompanyName> <d:ContactName>Victoria Ashworth
d:ContactName> <d:ContactTitle>Sales Representative
d:ContactTitle> <d:Address>Fauntleroy Circus
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>EC2 5NT
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-1212
d:Phone> <d:Fax m:null="true" />
m:properties>
content>
entry> <entry> <id>http://localhost:1000/NorthwindService.svc/Customers('CONSH')
id> <title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('CONSH')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('CONSH')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>CONSH
d:CustomerID> <d:CompanyName>Consolidated Holdings
d:CompanyName> <d:ContactName>Elizabeth Brown
d:ContactName> <d:ContactTitle>Sales Representative
d:ContactTitle> <d:Address>Berkeley Gardens 12 Brewery
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>WX1 6LT
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-2282
d:Phone> <d:Fax>(171) 555-9199
d:Fax>
m:properties>
content>
entry> <entry> <id>http://localhost:1000/NorthwindService.svc/Customers('EASTC')
id> <title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('EASTC')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('EASTC')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>EASTC
d:CustomerID> <d:CompanyName>Eastern Connection
d:CompanyName> <d:ContactName>Ann Devon
d:ContactName> <d:ContactTitle>Sales Agent
d:ContactTitle> <d:Address>35 King George
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>WX3 6FW
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-0297
d:Phone> <d:Fax>(171) 555-3373
d:Fax>
m:properties>
content>
entry> <entry> <id>http://localhost:1000/NorthwindService.svc/Customers('NORTS')
id> <title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('NORTS')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('NORTS')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>NORTS
d:CustomerID> <d:CompanyName>North/South
d:CompanyName> <d:ContactName>Simon Crowther
d:ContactName> <d:ContactTitle>Sales Associate
d:ContactTitle> <d:Address>South House 300 Queensbridge
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>SW7 1RZ
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-7733
d:Phone> <d:Fax>(171) 555-2530
d:Fax>
m:properties>
content>
entry> <entry> <id>http://localhost:1000/NorthwindService.svc/Customers('SEVES')
id> <title type="text">
title> <updated>2010-02-09T12:33:14Z
updated> <author> <name />
author> <link rel="edit" title="Customers" href="Customers('SEVES')" /> <link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('SEVES')/Orders" /> <category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:CustomerID>SEVES
d:CustomerID> <d:CompanyName>Seven Seas Imports
d:CompanyName> <d:ContactName>Hari Kumar
d:ContactName> <d:ContactTitle>Sales Manager
d:ContactTitle> <d:Address>90 Wadhurst Rd.
d:Address> <d:City>London
d:City> <d:Region m:null="true" /> <d:PostalCode>OX15 4NB
d:PostalCode> <d:Country>UK
d:Country> <d:Phone>(171) 555-1717
d:Phone> <d:Fax>(171) 555-5646
d:Fax>
m:properties>
content>
entry>
feed> 2.插入数据
(这个操作是POST)
//增加新客户
localhost.Customers newCustomer = new localhost.Customers()
{
CustomerID = "FFFFF",
CompanyName = "Thinker Inc"
};
context.AddToCustomers(newCustomer);
发送给服务器的数据是
POST /NorthwindService.svc/Customers HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 1.0;NetFx
Content-Type: application/atom+xml
Host: localhost:1000
Content-Length: 978
Expect: 100-continue
xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<category scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="NorthwindModel.Customers" />
<title />
<updated>2010-02-09T12:34:10.5029331Z
updated>
<author>
<name />
author>
<id />
<content type="application/xml">
<m:properties>
<d:Address m:null="true" />
<d:City m:null="true" />
<d:CompanyName>Thinker Inc
d:CompanyName>
<d:ContactName m:null="true" />
<d:ContactTitle m:null="true" />
<d:Country m:null="true" />
<d:CustomerID>FFFFF
d:CustomerID>
<d:Fax m:null="true" />
<d:Phone m:null="true" />
<d:PostalCode m:null="true" />
<d:Region m:null="true" />
m:properties>
content>
entry>
返回的数据是
HTTP/1.1 100 Continue
Server: ASP.NET Development Server/9.0.0.0
Date: Tue, 09 Feb 2010 12:34:10 GMT
Content-Length: 0
HTTP/1.1 201 Created
Server: ASP.NET Development Server/9.0.0.0
Date: Tue, 09 Feb 2010 12:34:10 GMT
X-AspNet-Version: 2.0.50727
DataServiceVersion: 1.0;
Location: http://localhost:1000/NorthwindService.svc/Customers('FFFFF')
Cache-Control: no-cache
Content-Type: application/atom+xml;charset=utf-8
Content-Length: 1347
Connection: Close
xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xml:base="http://localhost:1000/NorthwindService.svc/" xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<id>http://localhost:1000/NorthwindService.svc/Customers('FFFFF')
id>
<title type="text">
title>
<updated>2010-02-09T12:34:10Z
updated>
<author>
<name />
author>
<link rel="edit" title="Customers" href="Customers('FFFFF')" />
<link rel="http://schemas.microsoft.com/ado/2007/08/dataservices/related/Orders" type="application/atom+xml;type=feed" title="Orders" href="Customers('FFFFF')/Orders" />
<category term="NorthwindModel.Customers" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" />
<content type="application/xml">
<m:properties>
<d:CustomerID>FFFFF
d:CustomerID> <d:CompanyName>Thinker Inc
d:CompanyName> <d:ContactName m:null="true" /> <d:ContactTitle m:null="true" /> <d:Address m:null="true" /> <d:City m:null="true" /> <d:Region m:null="true" /> <d:PostalCode m:null="true" /> <d:Country m:null="true" /> <d:Phone m:null="true" /> <d:Fax m:null="true" />
m:properties>
content>
entry>
3.更新数据
(这个操作是用MERGE)
var c = context.Customers.Where(w => w.CustomerID == "FFFFF");
var customer = c.FirstOrDefault();
customer.CompanyName = "Microsoft";
context.UpdateObject(customer);
发送给服务的数据是
MERGE /NorthwindService.svc/Customers('FFFFF') HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 1.0;NetFx
Content-Type: application/atom+xml
Host: localhost:1000
Content-Length: 1040
Expect: 100-continue
xml version="1.0" encoding="utf-8" standalone="yes"?>
<entry xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices" xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata" xmlns="http://www.w3.org/2005/Atom">
<category scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" term="NorthwindModel.Customers" />
<title />
<updated>2010-02-09T12:48:12.3845677Z
updated>
<author>
<name />
author>
<id>http://localhost:1000/NorthwindService.svc/Customers('FFFFF')
id>
<content type="application/xml">
<m:properties>
<d:Address m:null="true" />
<d:City m:null="true" />
<d:CompanyName>Microsoft
d:CompanyName>
<d:ContactName m:null="true" />
<d:ContactTitle m:null="true" />
<d:Country m:null="true" />
<d:CustomerID>FFFFF
d:CustomerID> <d:Fax m:null="true" /> <d:Phone m:null="true" /> <d:PostalCode m:null="true" /> <d:Region m:null="true" />
m:properties>
content>
entry>
发送给数据库的指令是
exec sp_executesql N'update [dbo].[Customers]
set [CompanyName] = @0, [ContactName] = null, [ContactTitle] = null, [Address] = null, [City] = null, [Region] = null, [PostalCode] = null, [Country] = null, [Phone] = null, [Fax] = null
where ([CustomerID] = @1)
',N'@0 nvarchar(9),@1 nchar(5)',@0=N'Microsoft',@1=N'FFFFF'
回复给客户端的数据是
HTTP/1.1 204 No Content
Server: ASP.NET Development Server/9.0.0.0
Date: Tue, 09 Feb 2010 12:48:12 GMT
X-AspNet-Version: 2.0.50727
DataServiceVersion: 1.0;
Cache-Control: no-cache
Content-Length: 0
Connection: Close
4.删除数据
(这个操作是DELETE)
var c = context.Customers.Where(w => w.CustomerID == "FFFFF");
var customer = c.FirstOrDefault();
customer.CompanyName = "Microsoft";
context.DeleteObject(customer);
发送给服务的数据是
DELETE /NorthwindService.svc/Customers('FFFFF') HTTP/1.1
User-Agent: Microsoft ADO.NET Data Services
Accept: application/atom+xml,application/xml
Accept-Charset: UTF-8
DataServiceVersion: 1.0;NetFx
MaxDataServiceVersion: 1.0;NetFx
Content-Type: application/atom+xml
Host: localhost:1000
Content-Length: 0
发送给数据库服务器的指令是
exec sp_executesql N'delete [dbo].[Customers]
where ([CustomerID] = @0)',N'@0 nchar(5)',@0=N'FFFFF'
得到的回复是
HTTP/1.1 204 No Content
Server: ASP.NET Development Server/9.0.0.0
Date: Tue, 09 Feb 2010 13:01:04 GMT
X-AspNet-Version: 2.0.50727
DataServiceVersion: 1.0;
Cache-Control: no-cache
Content-Length: 0
Connection: Close