我有一个c#控制台应用程序,该应用程序从csv文件中加载大量数据,对其进行解析,然后创建或更新记录。该文件包含数千条记录,这些记录创建了一个大型.net数据表。 ADO.net用于使用DbContext创建或更新记录。
使用数据表对象的foreach循环来创建/更新会导致RAM使用率上升,并最终引发超出内存的异常。
如果我将数据库上下文放在foreach循环中的using中,则内存由GC管理,并且程序运行没有问题,但是我担心继续创建新的db连接不是最佳实践。
泄漏记忆
using (myEntities db = new myEntities())
{
db.Database.Connection.ConnectionString = __ConnString;
foreach (DataRow item in _DataTable.Rows)
{
//create / update records
}
}
不会泄漏内存
foreach (DataRow item in _DataTable.Rows)
{
using (myEntities db = new myEntities())
{
db.Database.Connection.ConnectionString = __ConnString;
//create / update records
}
}
在foreach循环的using内部使用dbconnection是否存在重复性的缺点?