Добавление элементов списка в контекст Entity Framework из вложенного списка

#c# #entity-framework #list #reflection #collections

#c# #entity-framework #Список #отражение #Коллекции

Вопрос:

Я пытаюсь вставить некоторые записи в базу данных с помощью Entity Framework. С чем я борюсь, так это с доступом к свойствам внутренних списков.

Внутренние списки имеют следующую структуру:

 public class Innerlist
{
    public string item1 { get; set; }
    public List<string> item2 { get; set; }
    public List<object> item3 { get; set; }
    public int item4 {get; set;}
    etc...
}
  

Приведенный выше список затем оборачивается другим списком. Мой вопрос в том, как мне получить доступ к свойствам Item1, Item2 и Item3?

Мой циклический код имеет следующую структуру:

 using(var context = new fooContext())
{
    foreach (var innerList in Outerlist)
    {         
        try
        {
            context.fooEntity.Add(innerList);
        }
        catch (Exception ex)
        {
            Console.WriteLine("nn"   ex);
            Console.ReadLine();
        }
    }
}
  

Я попытался использовать цикл foreach, который перебирал внешний список, а затем другой цикл для перебора внутреннего списка. Однако это привело к ошибке о классе, не содержащем общедоступное определение ‘GetEnumerator’.

Внутренний цикл foreach структурирован следующим образом:

    foreach (var innerList in outerList)
{
    foreach(var item in innerList)
    {
        try
        {
            context.fooEntity.Add(item);
        }
        catch (Exception ex)
        {
            Console.WriteLine("nn"   ex);
            Console.ReadLine();
        }
    }

}
  

Теперь я получаю ошибки: «Наилучшее перегруженное соответствие имеет некоторые недопустимые аргументы». И «Не удается преобразовать из object в класс InnerList».

Редактировать

Я должен добавить, что это преобразуется в список с помощью JSON.net который принимает строку JSON и преобразует ее в список с помощью класса innerList, который существует как класс модели Entity Framework.

Любая помощь была бы отличной. Приветствия.

Комментарии:

1. Опубликуйте свой зацикленный фрагмент кода, чтобы мы могли увидеть, что вы сделали неправильно и как это исправить..

2. @har07 Я обновил свой вопрос.

3. Я имел в виду внутренний цикл, тот, который сгенерировал ошибку (ваш внешний цикл работает нормально, не так ли?)… Как насчет простого foreach(var item in innerList.item2){} , нет?

4. @har07 Спасибо за вашу помощь. Я снова обновил его.

5. Вопрос мне не очень понятен. Какова ваша цель здесь? Если вы хотите добавить InnerList класс в datacontext, то я думаю, вам не нужен внутренний цикл. Если вы хотите получить доступ к свойствам InnerList для любых других целей, вы можете сделать, как я предлагаю в моем предыдущем комментарии (показал пример того, как получить доступ к item2 свойству и выполнить цикл по его элементу списка)

Ответ №1:

Ваш класс Innerlist не является списком. Это класс, который содержит список. Создайте свой объект Innerlist, реализующий IEnumerable