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

  

将实体类、匿名对象转换为SqlParameter列表的更多相关文章

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

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

  2. JSON-JSON字符串转换成JSON对象、JSON对象数组、java实体类以及保存到List列表中

    处理JSON字符串时,一直出错,写个样例后发现原来是没有弄清楚数据的格式问题. 实现的是 JSONString 转换成java对象 或是 list列表 实例类 News package lyx.ent ...

  3. 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象

    类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...

  4. 匿名实现类&匿名对象

    学习过程中经常搞不清匿名类&匿名对象怎么用,今天就把常用的方式总结一遍. 1.创建了非匿名实现类的非匿名对象 //定义USB接口 interface USB{ void inputInofo( ...

  5. Python小白学习之路(五)—【类和对象】【列表】【列表相关功能】

    类和对象 (简单的了解一下这个概念,初步有个印象,这个概念很重要,后面会着重讲) 类:具有相同属性和方法的对象的集合: 对象:万物皆对象: 概念很抽象(每当我看不到概念的时候,我就会通过举例来理解) ...

  6. 使用C#中JavaScriptSerializer类将对象转换为Json格式数据

    将对象转换为json格式字符串: private JavaScriptSerializer serializer = new JavaScriptSerializer(); protected voi ...

  7. c#匿名类,匿名对象

    何谓匿名类,其实本质和普通定义的类一样,只不过是由系统的编译器来完成的,首先举个例子. 一般情况 //声明一个类,包含贴别多的字段 public class Person() { public str ...

  8. springMVC List对象转换为json列表对象

    @ResponseBody @RequestMapping("xxx.do") public List<POJO> getList(){ return List< ...

  9. .NET解析xml字符串,通过反射给实体类对象赋值,获取实体类数据列表

    /// <summary> /// 解析xml字符串 转换为实体类列表数据 /// </summary> /// <param name="xmlStr&quo ...

随机推荐

  1. window下安装cross-env解决NODE_ENV ts-node 不是内部或外部命令,也不是可运行的程序 或批处理文件 问题

    window下安装cross-env解决NODE_ENV ts-node 不是内部或外部命令,也不是可运行的程序 或批处理文件 问题 在git bash上启动无法进行调试,采用cross-env后可以 ...

  2. go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量

    go语言,golang学习笔记3 用命令下载框架报错问题解决 设置环境变量 下载安装:go get github.com/astaxie/beego 首页 - beego: 简约 & 强大并存 ...

  3. Git在Eclipse中的使用

    一.把远程仓库的项目clone到eclipse里面: 最新版的Eclipse上已经集成了Git插件.所以在Eclipse中可以很方便的使用Git的功能. 在使用Git功能之前,需要先进行下简单的设置. ...

  4. vue 加载更多2

    <template lang="html"> <div class="yo-scroll" :class="{'down':(sta ...

  5. input file accept类型

    Valid Accept Types: For CSV files (.csv), use: <input type="file" accept=".csv&quo ...

  6. Dubbox分布式框架之入门

    Dubbox简介 Dubbox是一个分布式服务框架,其前身是阿里巴巴开源项目Dubbox,被国内电商及换联网项目中使用,后期阿里巴巴停止了该项目的维护,当当网便在Dubbo基础上进行优化,并继续维护, ...

  7. zabbix 监控Nginx和PHP

    原理 Nginx和PHP(5.3及以上版本)都自带了一个状态页,默认没有开启,通过开启这个状态页即可获取实时的工作状态. Nginx状态获取 Nginx的配置默认是拒绝通过IP来访问,我们可以再默认虚 ...

  8. 【题解】Luogu P2157 [SDOI2009]学校食堂

    原题传送门:P2157 [SDOI2009]学校食堂 一看题目就知道是状压dp 设f[i][j][k]表示第1到i-1个人都吃完了饭,第i个人以及后面的7个人是否打饭的状态为j,当前最后打饭的人的编号 ...

  9. 20145325张梓靖 《网络对抗技术》 MSF基础应用

    20145325张梓靖 <网络对抗技术> MSF基础应用 实验内容 掌握metasploit的基本应用方式以及常用的三种攻击方式的思路 主动攻击,即对系统的攻击,不需要被攻击方配合,这里以 ...

  10. ml机器学习笔记

    一.安装机器学习的包 1.conda create -n ml python=3.6 2.source activate ml 3.升级pip :pip install --upgrade pip 4 ...