当前位置: 首页 > 编程语言 > C#

使用EF共享批量插入

时间:2023-04-11 01:21:54 C#

使用EF批量插入我需要使用C#和EF(使用.NET3.5)在数据库中插入一些对象(大约400万个)。添加对象的方法是:privateDBModelContainerAddToContext(DBModelContainerdb,tblMyTableitem,intcount){db.AddTottblMyTable(item);if((count%10000==0)||(count==this.toGenerate)){try{db.SaveChanges();}catch(Exceptione){Console.WriteLine(e.StackTrace);}}返回数据库;我如何从上下文对象中分离添加的对象(类型为tblMyTable)?我不需要它们供以后使用,当添加超过300000个对象时,dbsave(db.SaveChanges())之间的执行时间会急剧增加。Regards实体框架可能不是此类操作的最佳工具。使用普通的ADO.Net,一些存储过程可能会更好......但如果你必须使用它,这里有一些建议://缩小数据库上下文的范围db.AddTottblMyTable(item);db.SaveChanges();保持长时间运行的数据库上下文是不可取的,因此请考虑重构Add方法以避免尝试重用相同的上下文。有关详细信息,请参阅RickStrahl关于BulkInsert的文章AFAKEF不直接支持BulkInsert,因此手动操作会很乏味。尝试使用(varctx=GetContext()){using(vartransactionScope=newTransactionScope()){//dbcontext中的一些内容ctx.SaveChanges();transactionScope.Complete();可以试试unitwork,不要在每条记录插入时保存上下文(SaveChanges),而是在最后保存详细了解C#学习教程,希望大家多多关注——本文摘自互联网,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: