我有一个数据库,其中有两个数据表:-
表1
表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。
context.Products.Add(productList);
context.Save();但是,在保存这一点时,已经创建了产品价格列表,但没有相关的ProductID值。当它保存时,它会因为外键约束而崩溃。
是否有实体框架来获得ProductID,它将被分配给这个产品,而不需要先将每个产品写入数据库?在这里,数据库调用的最少数量是至关重要的。
我可以选择重新解析文件中的所有数据,但我也不热衷于此,因为它需要额外的处理时间。文件的结构将无法更改。
发布于 2015-09-16 10:57:04
我权衡了所有的选择,结果发现我们最好的方法就是把所有的产品都写到一个清单上,所有的产品价格都用已知的产品代码写到另一个列表中。
然后,我们将产品列表保存到数据库中,然后遍历这些产品,在将产品价格列表保存到数据库之前,根据匹配本地列表的ProductID返回ProductID。
2保存到数据库,从数据库中调用一次,我们将47分钟的数据导入减少到3分钟。
谢谢大家的帮助!
https://stackoverflow.com/questions/32569227
复制相似问题