专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > WCF

初学WCF,一个容易的示例(增删改查,实体类)

发布时间:2011-06-23 13:50:32 文章来源:www.iduyao.cn 采编人员:星星草
初学WCF,一个简单的示例(增删改查,实体类)

1、契约(接口):定义用户实体类User、需要实现的服务

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data;

namespace WcfService
{
    [ServiceContract]
    public interface IService1
    {
        //新增用户
        [OperationContract]
        int UserAdd(User model);

        //用户列表
        [OperationContract]
        DataTable UserList();

        //根据id获得用户对象
        [OperationContract]
        User UserGet(int idx);

        //编辑用户
        [OperationContract]
        bool UserUpdate(User model);

        //删除用户
        [OperationContract]
        bool UserDelete(int idx);

        //根据筛选条件获得用户列表
        [OperationContract]
        DataTable UserSearch(Dictionary<string,string> parameters);
    }

    //用户实体类
    [DataContract]
    public class User
    {
        [DataMember]
        public int idx { get; set; }

        [DataMember]
        public string uName { get; set; }

        [DataMember]
        public string uPwd { get; set; }

        [DataMember]
        public string discription { get; set; }

        [DataMember]
        public DateTime createdate { get; set; }
    }
}
View Code


2、服务:实现契约定义的服务

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Data;
using System.Data.SqlClient;

namespace WcfService
{
    public class Service1 : IService1
    {
        //新增用户
        public int UserAdd(User model)
        {
            string sql = "insert into wcfUser(uName,uPwd,discription,createdate) values(@uName,@uPwd,@discription,@createdate); select @@identity ;";
            int idx = Convert.ToInt32(SqlHelper.ExecuteScalar(CommandType.Text, sql
               , new SqlParameter("@uName", model.uName)
               , new SqlParameter("@uPwd", model.uPwd)
               , new SqlParameter("@discription", model.discription)
               , new SqlParameter("@createdate", model.createdate)
                ));
            return idx;
        }

        //用户列表
        public DataTable UserList()
        {
            string sql = "select * from wcfUser";
            return SqlHelper.ExecuteDataset(sql).Tables[0];
        }

        //根据id获得用户对象
        public User UserGet(int idx)
        {
            DataTable dt = SqlHelper.ExecuteDataset(CommandType.Text, "select * from dbo.wcfUser where idx=@idx",
                    new SqlParameter("@idx", idx)).Tables[0];
            if (dt.Rows.Count > 1)
            { throw new Exception("more than 1 row was found"); }

            if (dt.Rows.Count <= 0) { return null; }

            DataRow row = dt.Rows[0];
            User model = ToModel(row);
            return model;
        }

        //编辑用户
        public bool UserUpdate(User model)
        {
            string sql = "update wcfUser set uName=@uName,uPwd=@uPwd,discription=@discription,createdate=@createdate where idx=@idx";
            int rows = SqlHelper.ExecuteNonQuery(CommandType.Text, sql
                , new SqlParameter("@uName", model.uName)
                , new SqlParameter("@uPwd", model.uPwd)
                , new SqlParameter("@discription", model.discription)
                , new SqlParameter("@createdate", model.createdate)
                , new SqlParameter("@idx", model.idx)
                );
            return rows > 0; 
        }

        //删除用户
        public bool UserDelete(int idx)
        {
            int rows = SqlHelper.ExecuteNonQuery(CommandType.Text, " delete from dbo.wcfUser where idx=@idx",
                 new SqlParameter("@idx", idx));
            return rows > 0; 
        }

        //根据搜索条件获得用户列表
        public DataTable UserSearch(Dictionary<string, string> parameters)
        {
            string sql = "select * from wcfUser where 1=1 ";
            string strWhere = "";
            if (!string.IsNullOrEmpty(parameters["keywords"]))
            {
                strWhere = strWhere + " and (uName like '%" + parameters["keywords"] + "%' or discription like '%" + parameters["keywords"] + "%' ) ";
            }

            sql = sql + strWhere;
            return SqlHelper.ExecuteDataset(sql).Tables[0];
        }

        //DataRow 转换成 model
        private static User ToModel(DataRow row)
        {
            User model = new User();
            model.idx = row.IsNull("idx") ? 0 : (System.Int32)row["idx"];
            model.uName = row.IsNull("uName") ? null : (System.String)row["uName"];
            model.uPwd = row.IsNull("uPwd") ? null : (System.String)row["uPwd"];
            model.discription = row.IsNull("discription") ? "" : (System.String)row["discription"];
            model.createdate = row.IsNull("createdate") ? DateTime.Now : (System.DateTime)row["createdate"];
            return model;
        }
    }
}
View Code


3、客户端

(1)新增用户:

Service1Client sc = new Service1Client();

            User ent = new User();
            ent.uName = this.uName.Text;
            ent.uPwd = this.uPwd.Text;
            ent.discription = this.discription.Text;
            ent.createdate = DateTime.Now;

            int idx = sc.UserAdd(ent);
View Code

(2)用户列表:

Service1Client ent = new Service1Client();
            this.Repeater1.DataSource = ent.UserList();
            this.Repeater1.DataBind();
View Code

(3)编辑用户:

//获取用户id
string strIdx = Request["idx"];
            Service1Client sc = new Service1Client();
//根据id获得用户对象
            User ent = sc.UserGet(int.Parse(strIdx));

            ent.uName = this.uName.Text;
            ent.discription = this.discription.Text;

//编辑用户
            if (sc.UserUpdate(ent))
            {
                Response.Redirect("User_manage.aspx");
            } 
View Code

(4)删除用户:

//keyIdx 为从repeater获得的用户id
Service1Client sc = new Service1Client();
sc.UserDelete(int.Parse(keyIdx));
View Code

(5)查询:

            Service1Client sc = new Service1Client();

//查询条件
            Dictionary<string, string> dic = new Dictionary<string, string>();
            dic.Add("keywords", this.txtKeywords.Text);

//重新绑定repeater
            this.Repeater1.DataSource = sc.UserSearch(dic);
            this.Repeater1.DataBind();
View Code

 

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: