1

これに関する SO に関するかなりの数の投稿を読みましたが、これを理解するための助けが必要です。

CodeAnalysis は、このメソッドがオブジェクトを 2 回破棄していると言っています。実際、メソッド内の 2 つのオブジェクトについて、これについて警告しています。オブジェクトに対して 1回file.InputStreamreaderオブジェクトに対して1 回

これが私のコードです:

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;
            }

        }

ありがとう

4

1 に答える 1

2

using (var csvReader = new CsvHelper.CsvReader(reader))はすでにリーダー オブジェクトを破棄しているため、使用する必要はありませんusing (var reader = new StreamReader(file.InputStream))

于 2014-10-01T10:15:02.587 に答える