• 关于集合类的做法示例 实体类赋值 cnblogs


     

     

    关于集合类的做法!

    类工程:

    using System;

    using System.Data;

    namespace MyProduct.Employee

    {

     /// <summary>

     /// Employee的实体类

     /// </summary>

     public class EmployeeEntity

     {

            private int mEmployeeID;

            private string mLastName;

            private string mFirstName;

            public int EmployeeID

            {

                get { return mEmployeeID; }

                set { mEmployeeID = value; }

            }

            public string LastName

            {

                get { return mLastName; }

                set { mLastName = value; }

            }

            public string FirstName

            {

                get { return mFirstName; }

                set { mFirstName = value; }

            }

      public EmployeeEntity()

      {

      

      }

            /// <summary>

            /// 构造函数,给实体类赋值

            /// </summary>

            /// <param name="pDR">DataRow</param>

            public EmployeeEntity(DataRow pDR)

            {

                Fill(pDR);

            }

            /// <summary>

            /// 给实体类赋值

            /// </summary>

            /// <param name="pDR">DataRow</param>

            public void Fill(DataRow pDR)

            {           

                foreach( System.Reflection.PropertyInfo pi in this.GetType().GetProperties())

                {

                    if (pi.CanWrite)

                    {

                        try

                        {

                            if (pDR[ pi.Name ] != null && !pDR.IsNull( pi.Name ) )

                            {     

                                pi.Setvalue(this, pDR[ pi.Name ], null);

                            }

                            else

                            {

                                pi.Setvalue(this, null, null);

                            }

                        }

                        catch

                        {

                            pi.Setvalue(this, null, null);

                        }

                    }

                }

      

            }

     }

    /// <summary>

        /// Employee的集合类

        /// </summary>

        public class EmployeeList : System.Collections.CollectionBase

        {

            public EmployeeList()

            {

      

            }

            /// <summary>

            /// 构造函数,给集合类赋值

            /// </summary>

            /// <param name="pDT">DataTable</param>

            public EmployeeList(DataTable pDT)

            {

                Fill(pDT);

            }

            /// <summary>

            /// 给集合类赋值

            /// </summary>

            /// <param name="pDT">DataTable</param>

            public void Fill(DataTable pDT)

            {

                foreach(DataRow pDR in pDT.Rows)

                {

                    this.InnerList.Add( new EmployeeEntity( pDR ) );

                }

            }

            /// <summary>

            /// 索引

            /// </summary>

            public virtual EmployeeEntity this[int Index]

            {

                get

                {

                    return (EmployeeEntity)this.List[Index];

                }

            }

            /// <summary>

            /// 添加

            /// </summary>

            /// <param name="pEmp">实体类</param>

            public virtual void Add(EmployeeEntity pEmp)

            {

                this.List.Add(pEmp);

            }

            /// <summary>

            /// 删除

            /// </summary>

            /// <param name="Index">index</param>

            public virtual void Remove(int Index)

            {

                this.List.RemoveAt(Index);

            }

        }

        /// <summary>

        /// Employee业务类

        /// </summary>

        public class EmployeeRule

        {

            /// <summary>

            /// 获取所有

            /// </summary>

            /// <returns></returns>

            public EmployeeList GetAllEmployees()

            {

                string sql;

                sql="select * from employees";

                DataTable pDT=ExeForDtl(sql);

                EmployeeList emplist=new EmployeeList();           

                emplist.Fill(pDT);

                return emplist;

            }

            /// <summary>

            /// 获取一个

            /// </summary>

            /// <param name="pEmployeeID"></param>

            /// <returns></returns>

    public EmployeeEntity GetOneEmployee(int pEmployeeID)

            {

                string sql;

                sql="select * from employees where employeeid="+pEmployeeID;

              

                DataTable pDT=new DataTable();

                pDT=ExeForDtl(sql);

                if(pDT.Rows.Count>0)

                {

                    return new EmployeeEntity(pDT.Rows[0]);

                }

                else

                {

                    return null;

                }

            }

        }

    }

    Web工程:

    这里的Web工程说明了怎样去调用我们写的集合类。

    1。在DataGrid中使用集合类

    直接绑定:

    EmployeeRule empRule=new EmployeeRule();

    DataGrid1.DataSource=empRule.GetAllEmployees();

    DataGrid1.DataBind();

    手工添加绑定:

    EmployeeEntity emp=new EmployeeEntity();

    emp.EmployeeID=10;

    emp.FirstName="mike";

    emp.LastName="daoson";

    EmployeeList empList=new EmployeeList();

    empList.Add(emp);

    DataGrid1.DataSource=empList;

    DataGrid1.DataBind();

    2。给文本框赋值

    EmployeeEntity emp=new EmployeeEntity();

    emp=empRule.GetOneEmployee(1);

    txtEmployeeID.Text=emp.EmployeeID.ToString();

    txtFirstName.Text=emp.FirstName;

    txtLastName.Text=emp.LastName;

    下面讲一下此种方法的优缺点:

    优点:

    1。通过反射,循环给属性赋值,省去了给属性赋值的大量工作量

    2。集合类可以直接绑定到DataGrid中

    3。自己如果想构造一个虚拟的DataTable,可以通过集合类来做

    4。这种方法可以用foreach做循环来检索出他的实体类

    5。这里可以直接把datarow赋给实体类,也可以给实体类手工赋值

    缺点:

    1。数据库中的字段名必须要和实体类中的属性相一致

    2。如果是多个表关联,那么集合类就不能绑定到DataGrid

     


    作者:水木    
     
  • 相关阅读:
    JavaScript内置函数
    JavaScript内置函数
    javascript入门之算术乘法表
    第三章 3 python运算符的优先级
    第三章 2 pyhon中的运算符
    第三章 1 input输入函数
    第二章 5 python中的注释
    第二章 4 数据类型的转换
    第二章 3 数据类型
    第二章 2 python中的标识符和保留字
  • 原文地址:https://www.cnblogs.com/hsapphire/p/1653889.html
Copyright © 2020-2023  润新知