zoukankan      html  css  js  c++  java
  • Silverlight 使用WCF RIA 方式对数据库进行增删改查

    Silverlight 使用WCF RIA 方式对数据库进行增山改查

    时间:2012-11-14 18:25来源:博客园 作者:朋朋朋 点击:389次
    使用的是Northwind数据库 DomainService1.cs中的文件内容: 分页标题 namespace SlWCfRiaDemo.Web{ using System; using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.DataAnnotations; using System.Data; using System.Lin
      

      使用的是Northwind数据库

      

     

      DomainService1.cs中的文件内容:

    namespace SlWCfRiaDemo.Web
    {
        using System;
        using System.Collections.Generic;
        using System.ComponentModel;
        using System.ComponentModel.DataAnnotations;
        using System.Data;
        using System.Linq;
        using System.ServiceModel.DomainServices.EntityFramework;
        using System.ServiceModel.DomainServices.Hosting;
        using System.ServiceModel.DomainServices.Server;
    
    
        // Implements application logic using the NorthwindEntities context.
        // TODO: Add your application logic to these methods or in additional methods.
        // TODO: Wire up authentication (Windows/ASP.NET Forms) and uncomment the following to disable anonymous access
        // Also consider adding roles to restrict access as appropriate.
        // [RequiresAuthentication]
        [EnableClientAccess()]
        public class DomainService1 : LinqToEntitiesDomainService<NorthwindEntities>
        {
    
            // TODO:
            // Consider constraining the results of your query method.  If you need additional input you can
            // add parameters to this method or create additional query methods with different names.
            // To support paging you will need to add ordering to the 'Categories' query.
            public IQueryable<Categories> GetCategories()
            {
                return this.ObjectContext.Categories;
            }
    
            public void InsertCategory(Categories category)
            {
                if ((category.EntityState != EntityState.Detached))
                {
                    this.ObjectContext.ObjectStateManager.ChangeObjectState(category, EntityState.Added);
                }
                else
                {
                    this.ObjectContext.Categories.AddObject(category);
                }
            }
    
            public void UpdateCategory(Categories currentCategory)
            {
                this.ObjectContext.Categories.AttachAsModified(currentCategory, this.ChangeSet.GetOriginal(currentCategory));
            }
    
            public void DeleteCategory(Categories category)
            {
                if ((category.EntityState == EntityState.Detached))
                {
                    this.ObjectContext.Categories.Attach(category);
                }
                this.ObjectContext.Categories.DeleteObject(category);
            }
        }
    }

      MainPage.xaml.cs:

    using SlWCfRiaDemo.Web;
    using System;
    using System.Collections.Generic;
    using System.Collections.ObjectModel;
    using System.Linq;
    using System.Net;
    using System.ServiceModel.DomainServices.Client;
    using System.Windows;
    using System.Windows.Controls;
    using System.Windows.Documents;
    using System.Windows.Input;
    using System.Windows.Media;
    using System.Windows.Media.Animation;
    using System.Windows.Shapes;
    
    namespace SlWCfRiaDemo
    {
        public partial class MainPage : UserControl
        {
            DomainService1 ds = new DomainService1();
    
            public ObservableCollection<Categories> Data { get; set; }
    
            public MainPage()
            {
                InitializeComponent();
                Data = new ObservableCollection<Categories>();
    
                LoadData();
            }
    
            /// <summary>
            /// 加载数据
            /// </summary>
            private void LoadData()
            {
                ds.Load(ds.GetCategoriesQuery(), o => 
                {
                    Data.Clear();
                    foreach (Categories c in o.Entities)
                    {
                        Data.Add(c);
                    }
                    this.datalist.ItemsSource = Data;
                }, null);
            }
    
            /// <summary>
            /// 增加数据
            /// </summary>
            /// <param name="categoryName"></param>
            public void Insert(string categoryName)
            {
                EntitySet<Categories> categories = ds.EntityContainer.GetEntitySet<Categories>();
                Categories cate = new Categories();
                cate.CategoryName = categoryName;
                cate.CategoryID = 12;
                categories.Add(cate);
    
                ds.SubmitChanges(OnInsertCompleted, cate);
            }
            private void OnInsertCompleted(SubmitOperation so)
            {
                if (!so.HasError)
                {
                    Data.Insert(0, so.UserState as Categories);
                }
            }
    
            /// <summary>
            /// 删除数据
            /// </summary>
            /// <param name="categories"></param>
            public void Delete(List<Categories> categories)
            {
                EntitySet<Categories> categoriesOriginal = ds.EntityContainer.GetEntitySet<Categories>();
                foreach (Categories c in categories)
                {
                    categoriesOriginal.Remove(c);
                }
                ds.SubmitChanges(OnDeleteCompleted, categories);
            }
            private void OnDeleteCompleted(SubmitOperation so)
            {
                if (!so.HasError)
                {
                    List<Categories> categories = so.UserState as List<Categories>;
                    foreach (Categories cc in categories)
                    {
                        Data.Remove(cc);
                    }
                }
            }
    
            /// <summary>
            /// 更新数据
            /// </summary>
            public void Update()
            {
                ds.SubmitChanges(OnUpdateCompleted, null);
            }
            private void OnUpdateCompleted(SubmitOperation so)
            {
                if (!so.HasError)
                {
                    MessageBox.Show("更新成功");
                }
            }
    
            /// <summary>
            /// 增加按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnAdd_Click(object sender, RoutedEventArgs e)
            {
                Insert(this.txtCate.Text.Trim().ToString());
            }
    
            /// <summary>
            /// 删除按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnDele_Click_1(object sender, RoutedEventArgs e)
            {
                var collection = this.datalist.SelectedItems as System.Collections.IList;
                var categories = new List<Categories>();
                foreach (Categories cate in collection)
                {
                    categories.Add(cate);
                }
    
                Delete(categories);
            }
    
            /// <summary>
            /// 更新按钮
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            private void btnUpdate_Click_1(object sender, RoutedEventArgs e)
            {
                Update();
            }
    
        }
    }

      MainPage.xaml:

    <UserControl
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" x:Class="SlWCfRiaDemo.MainPage"
        mc:Ignorable="d"
        d:DesignHeight="600" d:DesignWidth="800">
    
        <Grid x:Name="LayoutRoot" Background="White">
            <TextBox x:Name="txtCate" HorizontalAlignment="Left" Height="31" Margin="138,63,0,0" TextWrapping="Wrap" Text="TextBox" VerticalAlignment="Top" Width="151"/>
            <Button x:Name="btnAdd" Content="增 加" HorizontalAlignment="Left" Height="31" Margin="309,63,0,0" VerticalAlignment="Top" Width="82" Click="btnAdd_Click"/>
    
            <sdk:DataGrid x:Name="datalist" AutoGenerateColumns="False" HorizontalAlignment="Left" Height="276" Margin="138,133,0,0" VerticalAlignment="Top" Width="446">
                <sdk:DataGrid.Columns>
                    <sdk:DataGridTextColumn Header="类别ID" Binding="{Binding CategoryID}" IsReadOnly="True" />
                    <sdk:DataGridTextColumn Header="类别名称" Binding="{Binding CategoryName}" IsReadOnly="True" />
                    <sdk:DataGridTextColumn Header="详细描述" Binding="{Binding Description}" IsReadOnly="True" />
                    <sdk:DataGridTextColumn Header="图片" Binding="{Binding Picture}" />
                </sdk:DataGrid.Columns>
            </sdk:DataGrid>
            <Button x:Name="btnDele" Content="删  除" HorizontalAlignment="Left" Height="31" Margin="410,63,0,0" VerticalAlignment="Top" Width="82" Click="btnDele_Click_1"/>
            <Button x:Name="btnUpdate" Content="更  新" HorizontalAlignment="Left" Height="31" Margin="514,63,0,0" VerticalAlignment="Top" Width="82" Click="btnUpdate_Click_1"/>
    
        </Grid>
    </UserControl>

      更新功能没实现

      本文来自朋朋朋的博客,原文地址:http://www.cnblogs.com/caok168/archive/2012/11/14/2770091.html

  • 相关阅读:
    【响应式Web设计实践 #BOOK#】
    【JS】(+﹏+)~
    -_-#【邮件】qq邮箱不显示图片
    -_-#【Markdown】
    51Nod——N1284 2 3 5 7的倍数
    51Nod——N1118 机器人走方格
    洛谷——P1014 Cantor表
    洛谷—— P1434 滑雪
    洛谷——P1443 马的遍历
    python(24)- 面向对象进阶
  • 原文地址:https://www.cnblogs.com/x-ing/p/3442278.html
Copyright © 2011-2022 走看看