- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
EntityFramework 中支持 BulkInsert 扩展
EntityFramework 中支持 BulkInsert 扩展
很显然,你应该不至于使用 EntityFramework 直接插入 10W 数据到数据库中,那可能得用上个几分钟。EntityFramework 最被人诟病的地方就是它的性能,处理大量数据时的效率。此种条件下,通常会转回使用 ADO.NET 来完成任务。
但是,如果已经在项目中使用了 EntityFramework,如果碰到需要直接向数据库中插入 10W 的数据的需求,引入 ADO.NET 和 SqlBulkCopy 的组合将打破 EntityFramework 作为 ORM 所带来的优势,我们不得不再次去编写那些 SQL 语句,关注表结构的细节,相应的代码可维护性也在下降。
那么,假设我们将 SqlBulkCopy 的功能封装为 EntityFramework 中的一个扩展方法,通过接口像外暴露 BulkInsert 方法。这样,我们既没有改变使用 EntityFramework 的习惯,同时也隐藏了 SqlBulkCopy 的代码细节,更重要的是,合理的封装演进出复用的可能性,可以在多个 Entity 表中使用。
环境准备
以下测试基于 EntityFramework 6.0.2 版本。
首先定义一个 Customer 类:
复制代码
1 public class Customer
2 {
3 public long Id { get; set; }
4 public string Name { get; set; }
5 public string Address { get; set; }
6 public string Phone { get; set; }
7 }
复制代码
通过 CustomerMap 类将 Entity 映射到数据库表结构:
复制代码
1 public class CustomerMap : EntityTypeConfigurationCustomer
2 {
3 public CustomerMap()
4 {
5 // Primary Key
6 this.HasKey(t = t.Id);
7
8 // Properties
9 this.Property(t = t.Name)
10 .IsRequired()
11 .HasMaxLength(256);
12
13 this.Property(t = t.Phone)
14 .IsRequired()
15 .HasMaxLength(256);
16
17 // Table Column Mappings
18 this.ToTable(Customer, STORE);
19 this.Property(t = t.Id).HasColumnName(Id);
20 this.Property(t = t.Name).HasColumnName(Name);
21 this.Property(t = t.Address).HasColumnName(Address);
22 this.Property(t = t.Phone).HasColumnName(Phone);
23 }
24 }
复制代码
我们定义数据库的名字为 “Retail”,则使用 RetailEntities 类来实现 DbContext :
复制代码
1 public class RetailEntities : DbContext
2 {
3 static RetailEntities()
4 {
5 Database.SetInitializerRetailEntities(
6 new DropCreateDatabaseAlwaysRetailEntities());
7 }
8
9 public RetailEntities()
10 : base(Name=RetailEntities)
11 {
12 }
13
14 public DbSetCustomer Customers { get; set; }
15
16 protected override void OnModelCreating(DbModelBuilder mod
您可能关注的文档
最近下载
- (word)Java笔试题.docx VIP
- JAVA笔试题基础很全有答案.pdf VIP
- 三年(2022-2024)中考历史真题分类汇编(全国通用)专题30 第二次工业革命和近代科学文化(原卷版).docx VIP
- 2024年外研版七年级上册英语Unit 6综合检测试卷及答案.doc VIP
- 艺苑掇英 第69期 懷菊草堂藏近现代绘画专辑_12589541.pdf
- 2018中考物理复习备考讲座材料.ppt VIP
- 移动基站施工进度计划及保证措施.doc
- 集采管理规章制度.docx VIP
- 燃气泄漏报警与应急系统的设计.doc VIP
- 2016款东风本田艾力绅ELYSION_汽车使用手册用户操作图解驾驶指南车主车辆说明书电子版.pdf
文档评论(0)