首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将海量数据写入数据库的实体框架

将海量数据写入数据库的实体框架
EN

Stack Overflow用户
提问于 2015-09-14 16:09:25
回答 1查看 94关注 0票数 0

我有一个数据库,其中有两个数据表:-

表1

  • ProductID
  • ProductName
  • ProductDescription
  • IsVisible
  • IsDeleted

表2 - ProductPriceID - ProductID - LocationID -价格

表2可以保存表1中每个产品在不同位置的许多价格。我从CSV文件中读取,其中产品详细信息列在第一列中,后面是15个位置的15列价格值。

我发现每次都有将近10,000种产品被导入,通过先写产品,然后将15种价格的清单写到表2,10000倍以上,将这个文件写入数据库,大大减缓了进口的速度。与“试图”首先列出10000种产品相比,它的速度降低了2.5倍,其次是132,000种产品的价格。让2写入数据库大大加快了整个过程,因为延迟时间是在数据库中发生的,因此编写2次而不是20,000次要容易得多。

我已经为每个对象创建了数据库类型列表,并将数据添加到每个对象中,这是很好的。问题在于表2中的ProductID。

代码语言:javascript
复制
context.Products.Add(productList);
context.Save();

但是,在保存这一点时,已经创建了产品价格列表,但没有相关的ProductID值。当它保存时,它会因为外键约束而崩溃。

是否有实体框架来获得ProductID,它将被分配给这个产品,而不需要先将每个产品写入数据库?在这里,数据库调用的最少数量是至关重要的。

我可以选择重新解析文件中的所有数据,但我也不热衷于此,因为它需要额外的处理时间。文件的结构将无法更改。

EN

回答 1

Stack Overflow用户

发布于 2015-09-16 10:57:04

我权衡了所有的选择,结果发现我们最好的方法就是把所有的产品都写到一个清单上,所有的产品价格都用已知的产品代码写到另一个列表中。

然后,我们将产品列表保存到数据库中,然后遍历这些产品,在将产品价格列表保存到数据库之前,根据匹配本地列表的ProductID返回ProductID。

2保存到数据库,从数据库中调用一次,我们将47分钟的数据导入减少到3分钟。

谢谢大家的帮助!

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32569227

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档