|
关于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
ADO.NET Data Service介绍
1.ADO.NET Data Service的DataServiceHost是一个WCF Service,由System.Data.Services.DataService提供来自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"] } |
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 |
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) {
} |
DataService 支持URL方式访问
格式 | http://[Url]/[ServiceName]/[EntityName]/[NavigationOptions]?[QueryOptions] |
Url: 数据服务所在的网址 ServiceName: 数据服务的名称 EntityName: Entity 名称或是 Service 方法名称 NavigationOptions: 查询 Entity 中关联的设定 QueryOptions: 查询的选项 |
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; } } |
NET技术:ADO.NET Data Service,转载需保留来源!
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。