資料對應工具 AssionMapper

來源:互聯網
上載者:User

     這是一個輕量的映射工具,不可與ORM做比較。它不參與到DB。一般用來配合SqlHelper來使用。目前實現的功能有:DataReader到List的映射、

DataReader到T的映射、List到List的映射、T到T的映射、T到資料庫參數的映射。以上這些都是平時操作資料庫工作量最大的部分,而且都是重

複的沒有含量的工作。其實真正寫SQL並不佔用多少工作量。

 

     下面來說下如何使用,並寫幾個各個功能下的使用樣本。

 

     首先下載:Assionsoft.AssionMapper 程式集,所有映射功能全部在這個程式集下面。不需要進行XML的配置。

 

     1、我們不採取XML配置的映射形式,而是在實體類上標上特性的方式。通過中繼資料標識映射。比如下面的學生實體:

    

[ResultMap("SysNo")]//參與單體DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ResultsMap("SysNo")]//參與集合DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ObjectMap]//參與對象映射
        [ParameterMap]//參與資料庫參數映射
        public int SysNo { get; set; }
        [ResultMap("Name")]//參與單體DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ResultsMap("Name")]//參與集合DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ObjectMap]//參與對象映射
        [ParameterMap("Name")]//參與資料庫參數映射
        public string Name { get; set; }
        [ResultMap("Gender")]//參與單體DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ResultsMap("Gender")]//參與集合DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ObjectMap]//參與對象映射
        [ParameterMap]//參與資料庫參數映射
        public bool Gender { get; set; }
        [ResultMap("Age")]//參與單體DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ResultsMap("Age")]//參與集合DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ObjectMap]//參與對象映射
        [ParameterMap]//參與資料庫參數映射
        public int Age { get; set; }
        [ResultMap("Birthday")]//參與單體DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ResultsMap("Birthday")]//參與集合DataReader返回映射,如果[ResultMap]無參則預設已屬性名稱匹配
        [ObjectMap]//參與對象映射
        [ParameterMap]//參與資料庫參數映射
        public DateTime Birthday { get; set; }

 

       2、資料庫插入增、刪、改的參數映射,我們通過委託把Common.Parameter.AddWithValue傳給方法進行與student的映射。

 

Student student = new Student() { Name = "張三", Gender = true, Age = 25, Birthday = DateTime.Now };
            SqlConnection conn = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "INSERT INTO ([Name],[Gender],[Age],[Birthday]) VALUES (@Name,@Gender,@Age,@Birthday)";
            ParameterMap.SqlParameterMap<Student>(cmd.Parameters.AddWithValue, student);//產生資料庫參數
            cmd.ExecuteNonQuery();
            cmd.Parameters.Clear();
            conn.Close();

 

             3、DataReader返回集合的映射

 

 

IList<Student> studentList = new List<Student>();
            SqlConnection conn = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT [SysNo],[Name],[Gender],[Age],[Birthday] FROM Student ORDER BY [SysNo] DESC";
            SqlDataReader dataReader = cmd.ExecuteReader();
            studentList = ResultMap.GetIList<Student>(dataReader);//從DataReader返回實體集合
            dataReader.Close();
            conn.Close();

 

               4、DataReader 返回實體的映射

 

 

            Student student = new Student();
            SqlConnection conn = new SqlConnection("server=ASSIONYANG-PCJ\\SQLEXPRESS;uid=sa;pwd=123;database=Testing");
            conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.Connection = conn;
            cmd.CommandText = "SELECT [SysNo],[Name],[Gender],[Age],[Birthday] FROM Student WHERE [SysNo]=@SysNo";
            ParameterMap.SqlParameterMap<Student>(cmd.Parameters.AddWithValue, student);
            SqlDataReader dataReader = cmd.ExecuteReader();
            student = ResultMap.Load<Student>(dataReader);//從DataReader返回單個實體
            dataReader.Close();
            conn.Close();

 

                5、集合TO 集合的映射

 

           

            IList<Student> studentList = new List<Student>();
            IList<Student> studentResultList = new List<Student>();
            studentResultList = ResultMap.GetIList<Student, Student>(studentList);//從集合返回集合

 

 

                 6、實體TO 實體的映射

 

            Student student = new Student();
            Student studentResult = new Student();
            studentResult = ResultMap.Load<Student, Student>(student);//從實體返回實體

 

          水文結束! 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.