|
1. 建立一个数据模型 注意:模型对应的表一定要有主键,否则,建立时将不会成功。 2.建立一个数据服务 public class WebDataService1 : DataService<myDBEntities> { // 仅调用此方法一次以初始化涉及服务范围的策略。 public static void InitializeService(IDataServiceConfiguration config) { // TODO: 设置规则以指明哪些实体集和服务操作是可见的、可更新的,等等。 config.SetEntitySetAccessRule("*", EntitySetRights.All); config.SetServiceOperationAccessRule("*", 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; }
[QueryInterceptor("tabX")] public System.Linq.Expressions.Expression<Func<tabX, bool>> query_tabX() { return p => p.z != "wwxxdd"; //为真表示允许查询 } [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) { } } } 3.设置xaml页面 <StackPanel x:Name="spTool" > <data:DataGrid x:Name="dg"></data:DataGrid> <Button x:Name="btnRetrivebyWeb" Content="WebClient方式加载数据" Width="200" /> <Button x:Name="btnRetriveByService" Content="DataServiceContext方式加载数据" Width="200" /> <Button x:Name="btnCreate" Content="添加" Width="200" /> <Button x:Name="btnUpdate" Content="修改" Width="200" /> <Button x:Name="btnDelete" Content="删除" Width="200" /> </StackPanel> 4.在xaml页面对应的cs文件中添加代码 public MainPage() { InitializeComponent(); this.spTool.Loaded += new RoutedEventHandler(spTool_Loaded); this.btnRetrivebyWeb.Click += new RoutedEventHandler(btnRetrivebyWeb_Click); this.btnRetriveByService.Click += new RoutedEventHandler(btnRetriveByService_Click); this.btnCreate.Click += new RoutedEventHandler(btnCreate_Click); this.btnUpdate.Click += new RoutedEventHandler(btnUpdate_Click); this.btnDelete.Click += new RoutedEventHandler(btnDelete_Click); } #region WebClient方式加载数据 private void btnRetrivebyWeb_Click(object sender, RoutedEventArgs e) { Uri uri = new Uri("http://localhost:8081/WebDataService1.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; } } #endregion myService.myDBEntities server; private void spTool_Loaded(object sender, RoutedEventArgs e) { Uri url = new Uri("http://localhost:8081/WebDataService1.svc"); server = new myService.myDBEntities(url); } #region DataServiceContext方式加载数据 private void btnRetriveByService_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:8081/WebDataService1.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(); } #endregion
void saveChanges_completed(IAsyncResult obj) { if (obj.IsCompleted) { //新增后,立即调用btnRetriveByService_Click时,会出错。 btnRetriveByService_Click(null, new RoutedEventArgs()); } } #region 添加数据并保存 private void btnCreate_Click(object sender, RoutedEventArgs e) { server.AddTotabX(new myService.tabX() { x = "007", z = "sss", y = "sss" }); server.BeginSaveChanges(new AsyncCallback(saveChanges_completed), null); } #endregion #region 修改数据并保存 private void btnUpdate_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:8081/WebDataService1.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); } #endregion #region 删除数据并保存 private void btnDelete_Click(object sender, RoutedEventArgs e) { Uri urlE = new Uri("http://localhost:8081/WebDataService1.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); } #endregion (责任编辑:admin) |





骆驼户外男 真皮磨砂日常休闲鞋 低帮 2011秋冬新款 专柜正品特价