批量插入实体类转化DataTable

/// <summary>
        /// 根据实体类得到表结构
        /// </summary>
        /// <param name="model">实体类</param>
        /// <returns></returns>
        private DataTable CreateData<T>(T model)
        {
            DataTable dataTable = new DataTable(typeof(T).Name);
            foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
            {
                if (propertyInfo.Name != "CTimestamp")//些字段为oracle中的Timesstarmp类型
                {
                    dataTable.Columns.Add(new DataColumn(propertyInfo.Name, propertyInfo.PropertyType));
                }
                else
                {
                    dataTable.Columns.Add(new DataColumn(propertyInfo.Name, typeof(DateTime)));
                }
            }
            return dataTable;
        }

  

  /// <summary>
        /// 实体类转换成DataTable
        /// 调用示例:DataTable dt= FillDataTable(Entitylist.ToList());
        /// </summary>
        /// <param name="modelList">实体类列表</param>
        /// <returns></returns>
        public DataTable FillDataTable<T>(List<T> modelList)
        {
            if (modelList == null || modelList.Count == 0)
            {
                return null;
            }
            DataTable dt = CreateData(modelList[0]);//创建表结构

            foreach (T model in modelList)
            {
                DataRow dataRow = dt.NewRow();
                foreach (PropertyInfo propertyInfo in typeof(T).GetProperties())
                {
                    dataRow[propertyInfo.Name] = propertyInfo.GetValue(model, null);
                }
                dt.Rows.Add(dataRow);
            }
            return dt;
        }

  

批量插入实体类转化DataTable

时间: 2024-10-10 22:15:41

批量插入实体类转化DataTable的相关文章

实体类转换为DataTable

下面为实体类转换为DataTable的一个小例子: 用到了反射知识. using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Reflection; using System.Text; using System.Threading.Tasks; namespace Net_ConsoleApplication { class Program { stat

实体类和DataTable的转换

引子 最近在项目中在数据库查询的时间,总是要用到数据表到实体类对象列表的转化,自己封装了一个转换的方法,用起来还比较方便,记下来,以后可以重复使用,原理就主要是利用反射,当然有更好的ORM框架可以实现,主要的原因就是我这里没有用orm. 实现 话不多少,直接上实现代码 /// <summary> /// 数据表转换类 /// </summary> /// <typeparam name="T"></typeparam> public cl

实体类与DataTable互换

/// <summary> /// 实体类转换成DataTable /// </summary> /// <param name="modelList">实体类列表</param> /// <returns></returns> public DataTable FillDataTable(List<T> modelList) { if (modelList == null || modelList.C

hibernate插入实体类【数据库默认值】不生效的问题

第一个问题老生常谈 如果表结构设置默认值 数据库实体类不对该字段进行复制的情况下插入数据记录 字段直接以数据库设置的默认值进行插入hibernate本身可以根据XML配置进行生效此配置 1 <hibernate-mapping 2     package="*.entity"> 3     <class name="ProEntity" table="PRODUCTINFO" dynamic-insert="true&

批量根据实体类生成相关的类

<# // 从实体类生成相关的实体类 #> <#@ template hostspecific="true" language="C#" #> <#@ assembly name="EnvDTE" #> <#@ assembly name="System.Core" #> <#@ assembly name="System.Data" #> <

SQL批量插入表类 SqlBulkInsert

ado.net已经有了sqlBulkCopy, 但是那个用xml格式,网络传输数据量太大. 自己实现了一个,传输尽量少的字节. 性能没对比过,有需要的自己拿去测试. 1 using System.Data.SqlClient; 2 3 namespace RaywindStudio.DAL { 4 5 /// <summary> 6 /// MSSQL批量插入表 7 /// </summary> 8 public static class SqlBulkInsert { 9 10

增加批量插入方法

近期工作中发现批量插入的方法需求越来越大.所以在ORM中增加了MYSQL的批量插入方法.由三个方法组成,可以使用在不同情况下. 1.根据传入的实体集合生成批量插入的SQL语名 GetInsertSqlBatch() 2.在方法1的基础上增加一个执行并返回是否成功的功能 ExecuteInsertModelBatch(). 3.上面两个方法都没有控制每次批量插入的最大数量.只适用于小量批量插入情况.如果实体集合一次性传入1万,10万也做一次提交的话好像不太合适吧.所以就有了第三个方法.第三个方法是

C#中几种数据库的大数据批量插入

C#语言中对SqlServer.Oracle.SQLite和MySql中的数据批量插入是支持的,不过Oracle需要使用Orace.DataAccess驱动. IProvider里有一个用于实现批量插入的插件服务接口IBatcherProvider.批量插入的实现可以通过实现该接口来实现. /// <summary> /// 提供数据批量处理的方法. /// </summary> public interface IBatcherProvider : IProviderServic

XML和实体类之间相互转换(序列化和反序列化)

我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67