|
關于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,轉載需保留來源!
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。