我通读了很多关于 SO 的帖子,仍然需要一些帮助来理解这一点。
CodeAnalysis 说这种方法会释放对象两次。实际上,它警告我该方法中的两个对象;一次用于file.InputStream
,一次用于reader
对象
这是我的代码:
public void SaveCsvData(HttpPostedFileBase file, int vendorId)
{
var listCsvImport = new List<CsvImport>();
try
{
using (var reader = new StreamReader(file.InputStream))
using (var csvReader = new CsvHelper.CsvReader(reader))
{
int count = 0;
while (csvReader.Read())
{
...<snip>...
listCsvImport.Add(record);
}
_db.CsvImports.AddRange(listCsvImport);
_db.SaveChanges();
}
...<snip>...
}
catch (CsvBadDataException ex)
{
log.Error("Invalid data in the CSV file, terminating process...");
throw;
}
catch (Exception ex)
{
log.Error("Csv import failed, no data was saved.", ex);
throw;
}
}
谢谢
using (var csvReader = new CsvHelper.CsvReader(reader))
已经释放了读取器对象,因此您不需要使用 using (var reader = new StreamReader(file.InputStream))
。