SilverLight中使用数据服务对数据库CRUD

SilverLight中使用数据服务对数据库CRUD,第1张

概述SilverLight中使用数据服务数据库CRUD     1.  建立一个数据模型 注意:模型对应的表一定要有主键,否则,建立时将不会成功。   2.建立一个数据服务 public class WebDataService1 : DataService<myDBEntities>     {         // 仅调用此方法一次以初始化涉及服务范围的策略。         public st

Silverlight中使用数据服务对数据库CRUD

 

 

1.  建立一个数据模型

注意:模型对应的表一定要有主键,否则,建立时将不会成功。

 

2.建立一个数据服务

public class WebDataService1 : DataService<myDBEntitIEs>

    {

        // 仅调用此方法一次以初始化涉及服务范围的策略。

        public static voID InitializeService(IDataServiceConfiguration config)

        {

            // Todo: 设置规则以指明哪些实体集和服务 *** 作是可见的、可更新的,等等。

            config.SetEntitySetAccessRule(@H_419_136@"*",EntitySetRights.All);

            config.SetServiceOperationAccessRule(@H_419_136@"*",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(@H_419_136@"tabX")]

        public System.linq.Expressions.Expression<Func<tabX,bool>> query_tabX()

        {

            return p => p.z != @H_419_136@"wwxxdd"; //为真表示允许查询

        }

 

        [ChangeInterceptor(@H_419_136@"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)

            {

 

            }

        }

@H_665_502@}

@H_665_502@ 

@H_665_502@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"  />

@H_665_502@        </StackPanel>

@H_665_502@ 

@H_665_502@ 

@H_665_502@4.xaml页面对应的cs文件中添加代码

@H_665_502@ 

        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);

 

@H_665_502@        }

@H_665_502@ 

        #region WebClIEnt方式加载数据

        private voID btnRetrivebyWeb_Click(object sender,RoutedEventArgs e)

        {

            Uri uri = new Uri(@H_419_136@"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 = @H_419_136@"http://www.w3.org/2005/Atom";

                Xnamespace d = @H_419_136@"http://schemas.microsoft.com/ado/2007/08/dataservices";

                Xnamespace m = @H_419_136@"http://schemas.microsoft.com/ado/2007/08/dataservices/Metadata";

 

                var List = from x in ls.Descendants(xmlns + @H_419_136@"entry")

                           select new myService.tabA

                           {

                               a = x.Descendants(d + @H_419_136@"a").First().Value,

                               b = x.Descendants(d + @H_419_136@"b").First().Value,

                               c = x.Descendants(d + @H_419_136@"c").First().Value

                           };

 

                dg.ItemsSource = List;

            }

        }

        #endregion

 

        //--------------------------------------------------------------------------------------

        myService.myDBEntitIEs server;

        private voID spTool_Loaded(object sender,RoutedEventArgs e)

        {

            Uri url = new Uri(@H_419_136@"http://localhost:8081/WebDataService1.svc");

            server = new myService.myDBEntitIEs(url);

        }

 

        #region DataServiceContext方式加载数据

        private voID btnRetriveByService_Click(object sender,RoutedEventArgs e)

        {

 

            Uri urlE = new Uri(@H_419_136@"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 = @H_419_136@"007",z = @H_419_136@"sss",y = @H_419_136@"sss" });

 

            server.BeginSaveChanges(new AsyncCallback(saveChanges_completed),null);

        }

        #endregion

 

        #region 修改数据并保存

 

        private voID btnUpdate_Click(object sender,RoutedEventArgs e)

        {

            Uri urlE = new Uri(@H_419_136@"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 == @H_419_136@"007").First();

            tp.y = @H_419_136@"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(@H_419_136@"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 == @H_419_136@"007").First();

            server.DeleteObject(tp);

            server.BeginSaveChanges(new AsyncCallback(saveChanges_completed),null);

 

        }

@H_665_502@#endregion

总结

以上是内存溢出为你收集整理的SilverLight中使用数据服务对数据库CRUD全部内容,希望文章能够帮你解决SilverLight中使用数据服务对数据库CRUD所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1046152.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存