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

本文介绍了一种将实体类或匿名对象转换为SqlParameter数组的方法,适用于.NET平台的数据库操作。通过示例展示了如何使用该方法,并强调了SqlParameter名称需采用小写形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/// <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();
}

/*>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
public class EntityClass
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; }
}

//使用示例:
//1.实体类
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();

  

转载于:https://www.cnblogs.com/XuPengLB/p/8021695.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值