我在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;
}
}
感谢
答案 0 :(得分:2)
using (var csvReader = new CsvHelper.CsvReader(reader))
已经处理了阅读器对象,因此您无需使用using (var reader = new StreamReader(file.InputStream))
。