• 将实体类/匿名对象转换为SqlParameter列表


     每次操作数据库参数化实在是太麻烦了,于是自己瞎琢磨,琢磨出下面扩展方式,能力有限,还有不足之处,请多多指教。

    /// <summary>
    /// <remarks>
    /// <para>将实体类/匿名对象转换为SqlParameter列表</para>
    /// <para>示例1: 实体类</para>
    /// <para>EntityClass entityClass = new EntityClass(){ Id = 1 , Name="名称"}; SqlParameter[] parms = entityClass.ToSqlParameterArray()</para>
    /// <para>示例2: 匿名对象</para>
    /// <para>var anonymousObject  = new { Id = 1 , Name="名称"}; SqlParameter[] parms = anonymousObject.ToSqlParameterArray()</para>
    /// <para>注意:SqlParameter(string parameterName, object value)的参数parameterName均为实体类/匿名对象属性的小写形式的副本。</para>
    /// <para>因此,对应sql参数应为小写形式,例如:insert into tbname(name) values(@name)</para>
    /// </remarks>
    /// </summary>
    /// <param name="obj">实体类/匿名对象</param>
    /// <returns>SqlParameter参数数组</returns>
    public static SqlParameter[] ToSqlParameterArray<T>(this T entityClass) where T : class
    {
        List<SqlParameter> parms = new List<SqlParameter>();
        PropertyInfo[] propertys = entityClass.GetType().GetProperties();
        foreach (PropertyInfo pi in propertys)
        {
            // 判断此属性是否有Getter
            if (!pi.CanRead)
            {
                continue;
            }
            object value = pi.GetValue(entityClass);
            parms.Add(new SqlParameter("@" + pi.Name.ToLower(), value));
        }
        return parms.ToArray();
    }
    

     使用示例:

    1.实体类

    public class EntityClass
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int Age { get; set; }
    }
    
    EntityClass ec = new EntityClass()
    {
        Name= "长毛象",
        Age = 2
    };
    //SqlParameter[] parms = ec.ToSqlParameterArray();
    var parms = ec.ToSqlParameterArray();
    

    2.匿名类

    var ec = new
    {
        Name = "长毛象",
        Age = "2"
    };
    //SqlParameter[] parms = ec.ToSqlParameterArray();
    var parms = ec.ToSqlParameterArray();
    
  • 相关阅读:
    猜拳游戏GuessGame源码
    基于vitamio的网络电视直播源码
    EarthWarrior3D游戏ios源码
    类似material design的电影应用源码
    四季电台应用项目源码
    高仿一元云购IOS应用源码项目
    非常不错的点餐系统应用ios源码完整版
    仿哔哩哔哩应用客户端Android版源码项目
    《你最美》换发型应用源码
    最新win7系统64位和32位系统Ghost装机稳定版下载
  • 原文地址:https://www.cnblogs.com/xiangyisheng/p/7640573.html
Copyright © 2020-2023  润新知