У меня Visual Studio 2017. Я пытаюсь прочитать свой CSV-файл в моей базе данных, чтобы инициализировать его.Я слежу за тренировкой в pluralsight aspdotnet-core-2-0-mvc-application-visual-studio-2017 пересматриваю Bethany's Pie Shop для моего Node Repo, и я на полпути к созданию страницы спискаДемо Создание домена на тренинге.В ходе обучения они инициализируют свою БД статической информацией о Списке, и я хочу использовать мой CSV-файл.Но у меня проблемы с чтением файла.Я посмотрел на mapPath не существует в текущем контексте , но это не помогло мне.Поэтому я пытаюсь предложить на rootFolderPath , а затем добавит путь к моему CSV-файлу.Я очень плохо знаком с веб-страницами MVC и т. Д., Поэтому у меня возникают проблемы с пониманием того, как применить этот последний пример к моему коду.
Я немного запутался, как appEnvironment предоставит мне rootPath для использования с моим файлом, который я собираюсь использовать с StreamReader.
Прямо сейчас я вижу
appEnvironment не существует в текущем контексте, где я пытаюсь вернуть его в моем Get ().
Я знаю, что должен вернуть туда IEnumerable, но как мне получить rootPath?Пример, который использовал appenvironment, возвращал это:
FolderScanner scanner = new FolderScanner(_hostEnvironment.WebRootPath);
return scanner.scan();
У меня нет FolderScanner.Может быть, это вещь Microsoft?Я больше программист на C ++ / php, поэтому не всегда уверен.Терпите меня, я пытаюсь изучить этот новый (для меня) мир технологий Microsoft.Это то, что у меня есть, и я прошу прощения за то, что включил много информации в мой MockNodeRepository.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Data;
using System.IO;
using System.Web;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;
//using Microsoft.AspNetCore.Hosting.Internal.HostingEnvironment;
using Microsoft.AspNetCore.Http;
namespace CATV_Dashboard_Node_Viewer.Models
{
public class MockNodeRepository : INodeRepository
{
private List<Node> _nodes;
private string csvFile;
//private string csvFile = HttpContext.Current.Server.MapPath("~/App_Data/Data.csv");//System.IO.File.ReadAllText(HttpContext.Current.Server.MapPath("~htm/external/Data.csv")); //need to check path here
private string rootPath;
public string CsvFile { get => csvFile; set => csvFile = rootPath + "/App_Data/Data.csv"; }
public IEnumerable<string> Get()
{
return appEnvironment.ApplicationName; //appEnvironment doesn't exist in current contest
}
private readonly IHostingEnvironment _appEnvironment;
public MockNodeRepository(IHostingEnvironment appEnvironment)
{
_appEnvironment = appEnvironment;
}
public MockNodeRepository()
{
if(_nodes == null)
{
InitializeNodes();
}
}
private void InitializeNodes()
{
_nodes = ConvertCSVtoList(CsvFile);
}
private List<Node> ConvertCSVtoList(string strFilePath)
{
List<Node> nodes = new List<Node>();
StreamReader sr = new StreamReader(strFilePath);
string[] headers = sr.ReadLine().Split(','); //remove header from Stream
//get each row of csv and convert to node add to List
while(!sr.EndOfStream)
{
string[] rows = sr.ReadLine().Split(',');
nodes.Add( new Node { NodeID = rows[0], Color = rows[1], CMTSName = rows[3], PercentDown = Convert.ToInt32(rows[4]), Count = Convert.ToInt32(rows[5]) });
}
return nodes;
}
public IEnumerable<Node> GetAllNodes()
{
throw new NotImplementedException();
}
public Node GetNodeByID(string nodeId)
{
throw new NotImplementedException();
}
}
}