CSV to Cascading Model using Entity Framework

I need to turn an automatic CSV file into multiple database columns using Entity Framework. It is set up so that each model has children. So that Animal contains a list of Types which contain a list of Classification. In this way Classification is a grandchild of Animal

Right now I have these three models that need to be filled by the CSV file. The file is formatted in the following way:

CSV to Cascading Model using Entity Framework

They are then pulled from the API into a Windows Desktop App as a cascading dropdown box. So far I’ve tried adding them to separate lists however that did not upload when using Entity Framework. The current way is to try to cascade down the list however I get an error

Sequence contains no events

Here is the portion of the code that I am having a problem with (had to edit due to work rules so classes are different):

var Animal = new List<AnimalModel>();

var lines = await ReadStreamAsync(new StreamReader(uploadModel.File.OpenReadStream()));

foreach(string l in lines)
{
   Animal.Add(new AnimalModel
   {
      AnimalName = cells[0],
   });

   Animal.Last().Type.Add(new TypeModel
      {
         TypeName = cells[1],
      });

   Animal.Last().Type.Last().Classification.Add(new ClassificationModel
   {
      Type = Type.Last(),
      ClassificationName = cells[2],
      Color = cells[3],
      Age = cells[4]
   });
}

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

I resolved the issue. I needed to initialize the list within the code as I am not doing so within the model. The following worked:

var Animal = new List<AnimalModel>();

var lines = await ReadStreamAsync(new StreamReader(uploadModel.File.OpenReadStream()));

foreach(string l in lines)
{
   Animal.Add(new AnimalModel
   {
      AnimalName = cells[0],
      Type = new List<TypeModel>()
      {
          new TypeModel()
          {
              TypeName = cells[1]
          }
      }
   });

And so on for the grandchild. I will have to clean this up as it is quite messy but this works for now.


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x