ADO.NET Data Service
关于ADO.NET Entity Framework部分的内容见ADO.NET Entity Framework(1-4)
http://www.cnblogs.com/foundation/archive/2008/10/06/1304718.html
本文例子下载: http://files.cnblogs.com/wxwinter/lz.rar
目录
4 Silverlight客启访问DataService 18
ADO.NET Data Service介绍
1.ADO.NET Data Service的DataServiceHost是一个WCF Service,由System.Data.Services.DataService<T>提供来自NET3.5 SP1 类库中的System.Data.Services.dll
2.DataServices会自动为加载的Entity对象生成具有增查删改功能的WCF服务
3.DataServices是以Http方式与客户端进行通信.任何可以实现HTTP访问的客户端,都可以与DataServices交互
4. NET3.5 SP1的客户端可以使用System.Data.Services.Client.DataServiceContext与DataServices交互,该类来自NET3.5 SP1 类库中的System.Data.Services.Client.dll 文件
5. Silverlight 2.0客户端可以使用System.Data.Services.Client.DataServiceContext与DataServices交互,该类来自Silverlight 2.0 类库中的System.Data.Services.Client 文件
6.DataServices提供ATOM与JSON两种格式用来描述数据结构,说明如下:
ATOM |
与RSS类似,也是建立在XML数据格式的基础之上的 Atom相对RSS格式而言,进行了扩展,提供了比RSS更多的项目属性 |
JSON |
格式如下 { "name": "wxd", "time": "2008/10/10 10:10", "value": 123.456, "list": [ "wxwinter", "lzm"] } |
创建DataService项目
数据表
tabA
tabX
创建ASPNET项目
添架ADONET Entity模型
添加ADO.NET数据服务
public class myWebDataService : DataService<myDBEntities> { public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); // * :表示全部实体集 // EntitySetRights.All : 表示全部的操作权限 } } |
在浏览器中查看
NET客启访问DataService
引用数据服务
查询
//查询 private void button1_Click(object sender, EventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); myService.myDBEntities server = new WinFormClient.myService.myDBEntities(url); foreach (var v in server.tabA) { Console.WriteLine("{0},{1},{2}", v.a, v.b, v.c); } //- foreach (var v in server.tabX.Where(p=>p.x=="002")) { Console.WriteLine("{0},{1},{2}", v.x, v.y, v.z); } } lzm ,2 ,5 wxd ,1 ,4 wxwinter ,3 ,6 002 ,8 ,llzzmm |
添加
//添加 private void button2_Click(object sender, EventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); myService.myDBEntities server = new WinFormClient.myService.myDBEntities(url); server.AddTotabA(new myService.tabA() { a = "wxdlzm", b = "333", c = "xxx" }); server.SaveChanges(); } |
修改
//修改 private void button3_Click(object sender, EventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); myService.myDBEntities server = new WinFormClient.myService.myDBEntities(url); var v = server.tabA.Where(p => p.a == "wxdlzm").First(); v.b = "hello"; server.UpdateObject(v); server.SaveChanges(); } |
删除
//删除 private void button4_Click(object sender, EventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); myService.myDBEntities server = new WinFormClient.myService.myDBEntities(url); var v = server.tabA.Where(p => p.a == "wxdlzm").First(); server.DeleteObject(v); server.SaveChanges(); } |
异步查询
//异步查询 myService.myDBEntities server1; //开始查询 private void button5_Click(object sender, EventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); Uri urlE = new Uri("http://localhost:1468/myWebDataService.svc/tabX"); server1 = new WinFormClient.myService.myDBEntities(url); server1.BeginExecute<myService.tabX>(urlE, new AsyncCallback(executed), null); } //返回结果 void executed(IAsyncResult obj) { var tp = server1.EndExecute<myService.tabX>(obj); foreach (var v in tp) { Console.WriteLine("{0},{1},{2}", v.x, v.y, v.z); } } |
Silverlight客启访问DataService
Silverlight 2.0 可以利用两种方法与DataServices交互:
- HttpWebRequest 与 HttpWebResponse
- System.Data.Services.Client.DataServiceContext
Silverlight 2.0 是使用异步方法来连接远程数据源。
LINQ 的 select ,要用 BeginExecute() 和 EndExecute()
LINQ 的 SaveChanges(),要用 BeginSaveChanges() 和 EndSaveChanges()
引用服务
xaml页面
<StackPanel Loaded="StackPanel_Loaded"> <data:DataGrid Name="dg"></data:DataGrid> <Button Content="DataServiceContext方式加载数据" Width="200" Click="loadData_Click" /> <Button Content="WebClient方式加载数据" Width="200" Click="loadData2_Click" /> <Button Content="添加" Width="200" Click="add_Click" /> <Button Content="修改" Width="200" Click="edit_Click" /> <Button Content="删除" Width="200" Click="del_Click" /> </StackPanel> |
myService.myDBEntities server; private void StackPanel_Loaded(object sender, RoutedEventArgs e) { Uri url = new Uri("http://localhost:1468/myWebDataService.svc"); server = new myService.myDBEntities(url); } void saveChanges_completed(IAsyncResult obj) { } |
查询(WebClient方式)
//WebClient方式加载数据 private void loadData2_Click(object sender, RoutedEventArgs e) { Uri uri = new Uri("http://localhost:1468/myWebDataService.svc/tabA"); WebClient client = new WebClient(); client.OpenReadCompleted += new OpenReadCompletedEventHandler(client_completed); client.OpenReadAsync(uri); } void client_completed(object sender, OpenReadCompletedEventArgs e) { if (e.Error == null) { XmlReader reader = XmlReader.Create(e.Result); XDocument ls = XDocument.Load(reader); XNamespace xmlns = "http://www.w3.org/2005/Atom"; XNamespace d = "http://schemas.microsoft.com/ado/2007/08/dataservices"; XNamespace m = "http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"; var list = from x in ls.Descendants(xmlns + "entry") select new myService.tabA { a= x.Descendants(d + "a").First().Value, b = x.Descendants(d + "b").First().Value, c = x.Descendants(d + "c").First().Value }; dg.ItemsSource = list; } } |
查询
//加载 private void loadData_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:1468/myWebDataService.svc/tabX"); server.BeginExecute<myService.tabX>(urlE, new AsyncCallback(load_completed), null); } void load_completed(IAsyncResult obj) { var tp = server.EndExecute<myService.tabX>(obj); this.dg.ItemsSource = tp.ToList(); } |
添加
//添加 private void add_Click(object sender, RoutedEventArgs e) { server.AddTotabX(new myService.tabX() { x="007",z="sss",y="sss" }); server.BeginSaveChanges(new AsyncCallback(saveChanges_completed), null); } |
编辑
//编辑 private void edit_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:1468/myWebDataService.svc/tabX"); server.BeginExecute<myService.tabX>(urlE, new AsyncCallback(begin_edit), null); } void begin_edit(IAsyncResult obj) { var tp = server.EndExecute<myService.tabX>(obj).Where(p => p.x == "007 ").First(); tp.y = "hello"; server.UpdateObject(tp); server.BeginSaveChanges(new AsyncCallback(saveChanges_completed), null); } |
删除
//删除 private void del_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:1468/myWebDataService.svc/tabX"); server.BeginExecute<myService.tabX>(urlE, new AsyncCallback(begin_del), null); } void begin_del(IAsyncResult obj) { var tp = server.EndExecute<myService.tabX>(obj).Where(p => p.x == "007 ").First(); server.DeleteObject(tp); server.BeginSaveChanges(new AsyncCallback(saveChanges_completed), null); } |
URL访问
DataService 支持URL方式访问
格式 |
http://[Url]/[ServiceName]/[EntityName]/[NavigationOptions]?[QueryOptions] |
Url: 数据服务所在的网址 ServiceName: 数据服务的名称 EntityName: Entity 名称或是 Service 方法名称 NavigationOptions: 查询 Entity 中关联的设定 QueryOptions: 查询的选项 |
运算符
运算符 |
说明 |
and |
|
or |
|
not |
|
eq |
= |
ne |
!= |
lt |
< |
gt |
> |
le |
<= |
ge |
>= |
add |
+ |
sub |
- |
mul |
* |
div |
/ |
mod |
余数 |
() |
关键字
expand |
类似于LINQ中的LoadOptions,以此来指定加载此对象相关的通过expand指定的对象。如果需要加载多个对象,用逗号分隔。 |
orderby |
指定排序方式。语法为:$orderby=Field [ASC|DESC], [Field[ASC|DESC]] |
Skip Top |
类似于LINQ中的Skip(PageSize * PageIndex).Take(PageSize)用来实现分页。 |
Filter |
通过filter这个参数可以在URL里传递过滤条件。 |
函数
bool substringof(string p0, string p1) |
|
bool startswith(string p0, string p1) |
|
int indexof(string arg) |
|
string remove(string p0, int pos) |
|
string remove(string p0, string find, string replace) |
|
string substring(string p0, int pos, int length) |
|
string toupper(string p0) |
|
string concat(string p0, string p1) |
|
bool endswith(string p0, string p1) |
|
int length(string p0) |
|
string insert(string p0,int pos, string p1) |
|
string remove(string p0, int pos, int length) |
|
string substring(string p0, int pos) |
|
string tolower(string p0) |
|
string trim(string p0) |
|
int day(DateTime) |
|
int month(DateTime) |
|
int hour(DateTime) |
|
int second(DateTime) |
|
int minute(DateTime) |
|
int year(DateTime) |
|
double round(double) |
|
decimal floor(decimal) |
|
decimal round(decimal) |
|
double ceiling(double) |
|
double floor(double) |
|
decimal ceiling(decimal) |
例1:直接访问Entity数据
http://localhost:1468/myWebDataService.svc/tabA |
由于返回的数据是ATOM格式的,如果浏览器支持该格式,会用阅读方式打开,如IE7用RSS阅读器方式打开 以下是返回的数据 |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">tabA</title> <id>http://localhost:1468/myWebDataService.svc/tabA</id> <updated>2008-11-17T11:14:32Z</updated> <link rel="self" title="tabA" href="tabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('lzm%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:14:32Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('lzm%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">lzm </d:a> <d:b xml:space="preserve">2 </d:b> <d:c xml:space="preserve">5 </d:c> </m:properties> </content> </entry> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxd%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:14:32Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxd%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxd </d:a> <d:b xml:space="preserve">1 </d:b> <d:c xml:space="preserve">4 </d:c> </m:properties> </content> </entry> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxdlzm%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:14:32Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxdlzm%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxdlzm </d:a> <d:b xml:space="preserve">333 </d:b> <d:c xml:space="preserve">xxx </d:c> </m:properties> </content> </entry> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxwinter%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:14:32Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxwinter%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxwinter </d:a> <d:b xml:space="preserve">3 </d:b> <d:c xml:space="preserve">6 </d:c> </m:properties> </content> </entry> </feed> |
例2:使用条件
http://localhost:1468/myWebDataService.svc/tabA?$filter=a eq 'wxd' |
http://localhost:1468/myWebDataService.svc/tabA?$filter=(a eq 'wxwinter') and (b eq '3') |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">tabA</title> <id>http://localhost:1468/myWebDataService.svc/tabA</id> <updated>2008-11-17T11:26:29Z</updated> <link rel="self" title="tabA" href="tabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxd%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:26:29Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxd%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxd </d:a> <d:b xml:space="preserve">1 </d:b> <d:c xml:space="preserve">4 </d:c> </m:properties> </content> </entry> </feed> |
例3:排序
http://localhost:1468/myWebDataService.svc/tabA?$filter=a ne 'wxd' &$orderby=b |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">tabA</title> <id>http://localhost:1468/myWebDataService.svc/tabA</id> <updated>2008-11-17T11:28:10Z</updated> <link rel="self" title="tabA" href="tabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('lzm%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:28:10Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('lzm%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">lzm </d:a> <d:b xml:space="preserve">2 </d:b> <d:c xml:space="preserve">5 </d:c> </m:properties> </content> </entry> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxwinter%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:28:10Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxwinter%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxwinter </d:a> <d:b xml:space="preserve">3 </d:b> <d:c xml:space="preserve">6 </d:c> </m:properties> </content> </entry> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxdlzm%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:28:10Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxdlzm%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxdlzm </d:a> <d:b xml:space="preserve">333 </d:b> <d:c xml:space="preserve">xxx </d:c> </m:properties> </content> </entry> </feed> |
例4:分页
http://localhost:1468/myWebDataService.svc/tabA?$filter=a ne 'wxd' &$orderby=b &$skip=2&top=2 |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">tabA</title> <id>http://localhost:1468/myWebDataService.svc/tabA</id> <updated>2008-11-17T11:30:20Z</updated> <link rel="self" title="tabA" href="tabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxdlzm%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T11:30:20Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxdlzm%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxdlzm </d:a> <d:b xml:space="preserve">333 </d:b> <d:c xml:space="preserve">xxx </d:c> </m:properties> </content> </entry> </feed> |
例5:函数的使用
http://localhost:1468/myWebDataService.svc/tabA?$filter=a eq trim(' wxd ') |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">tabA</title> <id>http://localhost:1468/myWebDataService.svc/tabA</id> <updated>2008-11-17T12:01:49Z</updated> <link rel="self" title="tabA" href="tabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('wxd%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T12:01:49Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('wxd%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">wxd </d:a> <d:b xml:space="preserve">1 </d:b> <d:c xml:space="preserve">4 </d:c> </m:properties> </content> </entry> </feed> |
WEB方法
[WebGet] 使用 GET方式访问
[WebInvoke] 使用 POST/PUT/DELETE 方式访问
服务
public class myWebDataService : DataService<myDBEntities> { public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); // * :表示全部实体集 // EntitySetRights.All : 表示全部的操作权限 // config.SetServiceOperationAccessRule("getTabA", ServiceOperationRights.All); config.SetServiceOperationAccessRule("*", ServiceOperationRights.All); // * :表示全部实体集 // ServiceOperationRights.All : 表示全部的操作权限 } [WebGet] public IQueryable<tabA> getTabA(string a) { var v= CurrentDataSource.tabA.Where(p => p.a == a); return v; } [WebInvoke] public IQueryable<tabX> getTabX(string x) { var v = CurrentDataSource.tabX.Where(p => p.x == x); return v; } } |
访问
方法名?参数='值
'
http://localhost:1468/myWebDataService.svc/getTabA?a='lzm' |
<?xml version="1.0" encoding="utf-8" standalone="yes"?> <feed xml:base="http://localhost:1468/myWebDataService.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">getTabA</title> <id>http://localhost:1468/myWebDataService.svc/getTabA</id> <updated>2008-11-17T02:23:29Z</updated> <link rel="self" title="getTabA" href="getTabA" /> <entry> <id>http://localhost:1468/myWebDataService.svc/tabA('lzm%20%20%20%20%20%20%20')</id> <title type="text"></title> <updated>2008-11-17T02:23:29Z</updated> <author> <name /> </author> <link rel="edit" title="tabA" href="tabA('lzm%20%20%20%20%20%20%20')" /> <category term="myDBModel.tabA" scheme="http://schemas.microsoft.com/ado/2007/08/dataservices/scheme" /> <content type="application/xml"> <m:properties> <d:a xml:space="preserve">lzm </d:a> <d:b xml:space="preserve">2 </d:b> <d:c xml:space="preserve">5 </d:c> </m:properties> </content> </entry> </feed> |
拦截器
查询拦截:当你仅仅想把具有某种状态或者特征的数据返回给客户端时,用拦截查询就可以实现
修改拦截:可以拦截提交到服务器的的数据更新操作:Add, Change ,Delete
查询拦截
public class myWebDataService : DataService<myDBEntities> { public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); // * :表示全部实体集 // EntitySetRights.All : 表示全部的操作权限 } [QueryInterceptor("tabX")] public System.Linq.Expressions.Expression<Func<tabX, bool>> query_tabX() { return p => p.z != "wwxxdd"; //为真表示允许查询 } } |
不使用QueryInterceptor的结果 使用QueryInterceptor的结果 |
修改拦截器
public class myWebDataService : DataService<myDBEntities> { public static void InitializeService(IDataServiceConfiguration config) { config.SetEntitySetAccessRule("*", EntitySetRights.All); // * :表示全部实体集 // EntitySetRights.All : 表示全部的操作权限 } [ChangeInterceptor("tabX")] public void change_tabX(tabX en, UpdateOperations operation) { //- if (operation == UpdateOperations.Add) { if (string.IsNullOrEmpty(en.y)) { //如果[y]为空的处理代码 } } //- if (operation == UpdateOperations.Change) { } //- if (operation == UpdateOperations.Delete) { } } } |
ADO.NET Data Service的更多相关文章
- Using ADO.NET Data Service
ADO.NET Data Service是随同Visual Studio 2008 SP1提供的用于构建在数据对象模型 (如EF-DEMX, LINQ-DBML) 之时来快速提供企业网内外的轻量级数据 ...
- WCF Data Service 使用小结 (一)—— 了解OData协议
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- WCF Data Service 使用小结 —— 了解OData(一)
最近做了一个小项目,其中用到了 WCF Data Service,之前是叫 ADO.NET Data Service 的.关于WCF Data Service,博客园里的介绍并不多,但它确实是个很好的 ...
- 一步一步学Silverlight 2系列(17):数据与通信之ADO.NET Data Services
概述 Silverlight 2 Beta 1版本发布了,无论从Runtime还是Tools都给我们带来了很多的惊喜,如支持框架语言Visual Basic, Visual C#, IronRuby, ...
- 我的WCF Data Service 系列 (一、为什么要有WCF Data Service)
开篇先说两名题外话, 在博问上,经常看到有个问性能问题,比如Entity Framework的性能行不行啊之类的. 其实这个行不行,关键还是看对象,一夜家族的老七可能勉强吃点蓝片片,也就行了,可真要让 ...
- 自定义Data Service Providers
自定义Data Service Providers 作者:AlexJ 翻译:谈少民 原文链接:http://blogs.msdn.com/b/alexj/archive/2010/01/07/data ...
- WCF Data Service
WCF Data Service:http://www.cnblogs.com/shanyou/category/240225.html
- WCF Data Service 使用小结(二) —— 使用WCF Data Service 创建OData服务
在 上一章 中,介绍了如何通过 OData 协议来访问 OData 服务提供的资源.下面来介绍如何创建一个 OData 服务.在这篇文章中,主要说明在.NET的环境下,如何使用 WCF Data Se ...
- 调用WCF Data Service的几点Tips
使用Linq实现sql in statement的时候,用EF的时候可以通过Contains.Exists的方法实现.但是在使用WCF Data Service的context的时候,会报不支持该方法 ...
随机推荐
- 64位linux 汇编
c源码:testg.c 1 #include<stdio.h> 2 3 #define s ...
- hdu 2674(余数性质)
N!Again Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- activity dialog生命周期
Android生命周期包括以下几个状态: onCreate(Bundle savedInstanceState):可以进行一些初始化的工作在activity第一次被创建的时候调用.这里是你做所有初始化 ...
- Smpt命令顺序不正确。 服务器响应为: Error: need EHLO and AUTH first !
刚发现以前做的QQ邮箱发送邮件不能用了,查找了下原因:未加( EnableSsl SSL加密连接 )导致的,顿时觉得很坑,以前QQ邮箱也没有这个限制啊,可能是最近加的. 好吧不多说直接从头走起,照顾 ...
- weblogic优化参数
因部署应用多,内存是使用量较大以及系统需要放在后台运行,以下步骤在确认weblogic可以正常运行的情况下继续进行修改配置. 一.启动免输密码配置: 1.停止weblogic 在系统运行界面按ctrl ...
- Light oj 1233 - Coin Change (III) (背包优化)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1233 题目就不说明了. 背包的二进制优化,比如10可以表示为1 2 4 3,而 ...
- jzyzoj 栈——P1148:括号匹配加强版
括号匹配加强版 描述 Description 对于一个由(,),[,]括号组成的字符串,求出其中最长的括号匹配字串. 具体来说,满足如下条件的字符串成为括号匹配的字符串: (1) (),[] 是括号匹 ...
- 洛谷2085最小函数值(minval) + 洛谷1631序列合并
题目描述 有n个函数,分别为F1,F2,-,Fn.定义Fi(x)=Ai*x^2+Bi*x+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...
- CoreData: 如何预载/导入已有的数据
原文地址:CoreData: 如何预载/导入已有的数据作者:出其东门 在系列教程一中,我们为对象建立了可视化数据模型,运行了快速肮脏测试并勾在一个表视图(table view)中来显示.而在这个教程, ...
- mysql count(*) 和count(1)区别
count *更快, 不要加where,否则同count(1)效率相同 sql语句对大小写不敏感,关键字一般大写,其他小写, count(*)不加where,mysql会直接返回总条数,因为mysql ...