ORM映射设计思想

using System;
using System.Collections.Generic;
using System.Data.SqlClient;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace 异步Test
{
    public class SqlHelper
    {
        public void Test()
        {
            using (SqlConnection con = new SqlConnection())
            {
                using (SqlCommand cmd = con.CreateCommand())
                {
                    cmd.CommandText = "";

                    con.Open();

                    using (SqlDataReader reader = cmd.ExecuteReader())
                    {
                        if (reader.HasRows)
                        {
                            while (reader.Read())
                            {
                               var result= MapEntity<Person>(reader);
                            }
                        }
                    }
                }
            }
        }

        private TResult MapEntity<TResult>(SqlDataReader reader) where TResult : new()
        {
            var properites = typeof(Person).GetProperties();
            var result = new TResult();

            foreach (var item in properites)
            {
                var index = reader.GetOrdinal(item.Name);
                var data = reader.GetValue(index);

                //item.SetValue(person, data);
                item.SetValue(result, Convert.ChangeType(data, item.PropertyType));
            }

            return result;
        }
    }

    public class Person
    {
        public string Id { get; set; }

        public string Name { get; set; }

        public string Gender { get; set; }
    }
}

 

posted @ 2016-03-01 11:07  寻_FIND  阅读(282)  评论(0编辑  收藏  举报