Api反射泛型添加


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
    public interface IDAL
    {
        /// <summary>
        /// 添加
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="sql"></param>
        /// <param name="m"></param>
        /// <returns></returns>
        int Add<T>(string sql, T m) where T : class, new();
        int Add1<T>(T m) where T : class, new();
        /// <summary>
        /// 显示
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="M"></param>
        /// <returns></returns>
        List<T> Query<T>(string m) where T : class, new();
    }
}
////**************************////
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
    public abstract class AbstractDAL
    {
        public static string con = System.Configuration.ConfigurationManager.ConnectionStrings["conn"].ConnectionString;
        public static IDbConnection SqlGet()
        {
            IDbConnection conn = new SqlConnection(con);
            if (conn.State!= ConnectionState.Closed)
            {
                conn.Open();
            }
            return conn;
           
        }
    }
}
///////***********/////
using Dapper;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace DAL
{
    public class SqlDbHelper : IDAL
    {
       private IDbConnection con = AbstractDAL.SqlGet();
        public int Add<T>(string sql, T m) where T : class, new()
        {
            return con.Execute(sql,m);
        }
        /// <summary>
        /// 反射泛型添加 
        public int Add1<T>(T m) where T : class, new()
        {
            string sql = "";
            string TableName = "";
            string FileName = "";
            string Values = "";
            Type type = m.GetType();
            PropertyInfo[] infos = type.GetProperties();
            TableName = type.Name.Replace("Model", "");
            for (int i = 0; i < infos.Length; i++)
            {
                if (!infos[i].Name.ToLower().Contains("id") && infos[i].GetValue(m) != null)
                {
                    if (i + 1 == infos.Length)
                    {
                        FileName += infos[i].Name;
                        Values += "'" + infos[i].GetValue(m).ToString() + "'";
                    }
                    else
                    {
                        FileName += infos[i].Name + ",";
                        Values += "'" + infos[i].GetValue(m).ToString() + "',";
                    }
                }
            }
            sql = " insert into [" + TableName + "](" + FileName + ") values(" + Values + ") ";
            return con.Execute(sql);
        }
        /// <summary>
        /// 显示
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="m"></param>
        /// <returns></returns>
        public List<T> Query<T>(string m) where T : class, new()
        {
            return con.Query<T>(m).ToList();
        }
    }
}
///******////

using DAL;
using Model;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace BLL
{
    public class RedBll
    {
        SqlDbHelper dal = new SqlDbHelper();
        /// <summary>
        /// Dapper添加
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        public int Add(RedPacketModel m)
        {
            string sql = "insert into RedPacket(Name, TypeId, Num, Balance, Number, BalanceNum, Common, State,CreateTime) values('" + m.Name + "','" + m.Type + "','" + m.Num + "','" + m.Balance + "','" + m.Number + "','" + m.BalanceNum + "','" + m.Common + "','" + m.State + "','" + DateTime.Now + "')";
            return dal.Add(sql, m);
        }
        /// <summary>
        /// 运用反射类添加
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        public int Insert(RedPacketModel m)
        {
            string sql = RefListSql.Add1(m);
            return dal.Add(sql, m);
        }
        /// <summary>
        /// 反射泛型添加
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="m"></param>
        /// <returns></returns>
        public int Append<T>(T m) where T : class, new()
        {
            return dal.Add1<T>(m);
        }
        /// <summary>
        /// 显示
        /// </summary>
        /// <returns></returns>
        public List<RedPacketModel> Show()
        {
            string sql = "select * from RedPacket";
            return dal.Query<RedPacketModel>(sql);
        }
        public List<RedPacketModel> Query(string TableName)
        {
            string sql = RefListSql.GetSemlSql(TableName);
            return dal.Query<RedPacketModel>(sql).ToList();
        }
        /// <summary>
        /// 显示
        /// </summary>
        /// <returns></returns>
        public List<TypeModel> TypeShow()
        {
            string sql = "select * from RedType";
            return dal.Query<TypeModel>(sql);
        }
        /// <summary>
        /// 显示
        /// </summary>
        /// <returns></returns>
        public List<StateModel> StateShow()
        {
            string sql = "select * from RedState";
            return dal.Query<StateModel>(sql);
        }
    }
}
///****////
using Model;
using ServiceStack.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace ZhouKao_RedPacket.Controllers
{
    public class RedController : ApiController
    {
        BLL.RedBll bll = new BLL.RedBll();
        /// <summary>
        /// 显示
        /// </summary>
        /// <returns></returns>
        [Route("api/Search")]
        [HttpGet]
        public IHttpActionResult Show()
        {
            return Ok(bll.Show());
        }
        [Route("api/Query")]
        [HttpGet]
        public IHttpActionResult Query(string name)
        {
            return Ok(bll.Query(name));
        }
        [Route("api/Type")]
        [HttpGet]
        public IHttpActionResult TypeShow()
        {
            return Ok(bll.TypeShow());
        }
        [Route("api/State")]
        [HttpGet]
        public IHttpActionResult StateShow()
        {
            return Ok(bll.StateShow());
        }
        /// <summary>
        /// 添加
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        [Route("api/Adds")]
        [HttpPost]
        public int Add(RedPacketModel m)
        {
            int flag = bll.Add(m);
            return flag;
        }
        /// <summary>
        /// 反射加泛型自动添加
        /// </summary>
        /// <param name="m"></param>
        /// <returns></returns>
        [Route("api/Append")]
        [HttpPost]
        public int Append(RedPacketModel m)
        {
            m.CreateTime = DateTime.Now;
            int flag = bll.Append(m);
            return flag;
        }
        [Route("api/Insert")]
        [HttpPost]
        public int Adds(RedPacketModel m)
        {
            m.CreateTime = DateTime.Now;
            int flag = bll.Insert(m);
            return flag;
        }
    }
}
原文地址:https://www.cnblogs.com/GuoLianSheng/p/13223558.html