当前位置: 首页 > news >正文

工业设计网站导航求个网站急急急

工业设计网站导航,求个网站急急急,定制app开发平台,美食网站开发计划一. 简介 1. 背景#xff1a; 虽然前面EF的扩展插件Z.EntityFramework.Extensions#xff0c;性能很快#xff0c;而且也很方便#xff0c;但是该插件要收费#xff0c;使用免费版本的话#xff0c;需要定期更新#xff0c;如果不更新#xff0c;将失效#xff0c;非…一. 简介 1. 背景 虽然前面EF的扩展插件Z.EntityFramework.Extensions性能很快而且也很方便但是该插件要收费使用免费版本的话需要定期更新如果不更新将失效非常麻烦这个时候SqlBulkCopy类既免费又高效显得非常合适了。 2. 使用步骤 ①. 引入命名空间:using System.Data.SqlClient; ②. 使用DataTable构造与目标数据库表结构相同的字段并给其赋值。 ③. 使用SqlBulkCopy类将内存表中的数据一次性插入到目标表中。(看下面的封装可知可以自行设置插入块的大小) 补充调用下面的封装这种形式必须内存表中的字段名和数据库表中的字段名一一对应。 二. 使用方式及其性能测试 1.  涉及到的数据库结构 2. 数据库连接字符串  add nameCodeFirstModel2 connectionStringdata sourcelocalhost;initial catalogEFDB2;persist security infoTrue;user idsa;password123456;MultipleActiveResultSetsTrue;AppEntityFramework providerNameSystem.Data.SqlClient / 3. 代码实践 有两种插入方式一种是按部就班的每个字段 内存表和数据表进行映射这个情况无须名称一致只要映射正确即可。另外一种方式是直接调用下面的封装方法即可这种要求内存表中字段和数据库表中的字段名称必须完全一致一一对应这样就省去了方法一 中一一匹配映射的繁琐步骤了。 1 public class SqlBulkCopyTest2 {3 public static void TestSqlBulkCopy()4 {5 //一. 构造DataTable结构并且给其赋值6 //1.定义与目标表的结构一致的内存表 排除自增id列 7 DataTable dtSource new DataTable();8 //列名称如果和目标表设置为一样则后面可以不用进行字段映射 9 dtSource.Columns.Add(id); 10 dtSource.Columns.Add(t21); 11 dtSource.Columns.Add(t22); 12 //2. 向dt中增加4W条测试数据 13 DataRow dr; 14 for (int i 0; i 40000; i) 15 { 16 // 创建与dt结构相同的DataRow对象 17 dr dtSource.NewRow(); 18 dr[id] Guid.NewGuid().ToString(N); 19 dr[t21] Name i; 20 dr[t22] Address i; 21 // 将dr追加到dt中 22 dtSource.Rows.Add(dr); 23 } 24 //二.将内存表dt中的4W条数据一次性插入到t_Data表中的相应列中 25 System.Diagnostics.Stopwatch st new System.Diagnostics.Stopwatch(); 26 st.Start(); 27 string connStr ConfigurationManager.ConnectionStrings[CodeFirstModel2].ToString(); 28 29 #region 01-按部就班一一对应 30 //{ 31 // using (SqlBulkCopy copy new SqlBulkCopy(connStr)) 32 // { 33 // //1 指定数据插入目标表名称 34 // copy.DestinationTableName TestTwo; 35 36 // //2 告诉SqlBulkCopy对象 内存表中的 字段和目标表中的字段 对应起来(这里有多个重载也可以用索引对应) 37 // //前面是内存表后面是目标表即数据库中的字段 38 // copy.ColumnMappings.Add(id, id); 39 // copy.ColumnMappings.Add(t21, t21); 40 // copy.ColumnMappings.Add(t22, t22); 41 42 // //3 将内存表dt中的数据一次性批量插入到目标表中 43 // copy.WriteToServer(dtSource); 44 // } 45 //} 46 47 #endregion 48 49 #region 02-调用封装 50 { 51 AddByBluckCopy(connStr, dtSource, TestTwo); 52 } 53 #endregion 54 55 st.Stop(); 56 Console.WriteLine(数据插入成功总耗时为: st.ElapsedMilliseconds 毫秒); 57 58 } 59 60 /// summary 61 /// 海量数据插入方法 62 /// (调用该方法需要注意DataTable中的字段名称必须和数据库中的字段名称一一对应) 64 /// /summary 65 /// param nameconnectstring数据连接字符串/param 66 /// param nametable内存表数据/param 67 /// param nametableName目标数据的名称/param 68 public static void AddByBluckCopy(string connectstring,DataTable table, string tableName) 69 { 70 if (table ! null table.Rows.Count 0) 71 { 72 using (SqlBulkCopy bulk new SqlBulkCopy(connectstring)) 73 { 74 bulk.BatchSize 1000; 75 bulk.BulkCopyTimeout 100; 76 bulk.DestinationTableName tableName; 77 bulk.WriteToServer(table); 78 } 79 } 80 } 81 } 4. 性能测试的结论 根据上述的数据测试可以看出来SqlBulkCopy在处理大数据量插入上速度非常快甚至比付费的插件Z.EntityFramework.Extensions都要快所以值得参考和推荐。 既然SqlBulkCopy解决大数据量的插入问题那么删除和更新怎么办呢 详见  第二十三节: EF性能篇(三)之基于开源组件 Z.EntityFrameWork.Plus.EF6解决EF性能问题
http://www.sadfv.cn/news/202552/

相关文章:

  • 阿里网站建设费用wordpress底部信息后台修改
  • 网站名称和域名不一致免费注册域名邮箱
  • 做网站做百度竞价赚钱cn域名
  • 做画册好的网站商城小程序 wordpress
  • 济南企业营销型网站建设怎么做福彩网站
  • 手机触屏版网站管理系统专业网站策划公司
  • 可以做婚礼视频的网站广州天河网站建设公司
  • 苏州市做网站简航app是什么
  • 深圳网站建设平台绿色蔬菜网站模板
  • 网站门户是什么意思python django 做 网站
  • a站是指哪个网站电脑编程培训
  • 青岛市黄岛区城市建设局 网站营销策划方案范文
  • 网站设计怎么做ppt答辩怎么让自己的网站被百度收录
  • 网站建设有什么意见wordpress写文章怎么添加图片
  • 织梦网站如何做地区分站学校建设网站费用申请
  • 广告网站模板免费下载软件app开发公司哪家好
  • 网站设计和建设自考题论坛网站怎么推广
  • 深圳建网站哪个公司wordpress 755权限
  • 杭州seo相关网站做网页需要的素材
  • 注册网站域名后免费建站广西建设监理协会官方网站
  • 自建网站营销公司代理记账企业
  • 网站维护好的方法道滘网站仿做
  • 公司网站建设技术方案wordpress z
  • 企业网站 源码 开源邢台网站制作多少钱
  • vs2008可以做网站网站移动端就是app吗
  • 社交网站建设码爱站工具网
  • 网站制作加盟网站建设免费课程
  • 重庆专业网站建设现在做网站用什么语言好
  • 淘宝接单做网站公司企业网络维护外包
  • 临沧市住房和城乡建设局门户网站门户网站标题居中加大