【问题标题】:Adding List Items to an Entity Framework Context from a Nested List将列表项从嵌套列表添加到实体框架上下文
【发布时间】:2014-07-03 04:08:29
【问题描述】:

我正在尝试使用实体框架将一些记录插入数据库。我正在努力的是访问内部列表的属性。

内部列表具有以下结构:

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("\n\n" + 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("\n\n" + ex);
            Console.ReadLine();
        }
    }

}

我现在收到错误消息:“最佳重载匹配有一些无效参数。”并且“无法从对象转换为 InnerList 类。”

编辑

我应该补充一点,这是使用 JSON.net 将其转换为列表,该列表采用 JSON 字符串并通过 innerList 类将其转换为列表,该类作为实体框架模型类存在。

任何帮助都会很棒。干杯。

【问题讨论】:

  • 发布你的 looping 代码 sn-p 以便我们看到你做错了什么以及如何解决它..
  • @har07 我已经更新了我的问题。
  • 我的意思是内循环,产生错误的那个(你的外循环工作正常,不是吗?)...简单的foreach(var item in innerList.item2){}怎么样,不是吗?
  • @har07 感谢您的帮助。我又更新了。
  • 这个问题对我来说不是很清楚。你在这里的目标是什么?如果您想将 InnerList 类添加到数据上下文中,那么我认为您不需要内部循环。如果您想访问InnerList 的属性 用于任何其他目的,您可以按照我之前评论中的建议进行操作(展示了如何访问item2 属性并循环访问它的列表成员的示例)

标签: c# entity-framework list reflection collections


【解决方案1】:

您的 Innerlist 课程不是列表。它是一个包含列表的类。 让你的 Innerlist 对象实现IEnumerable

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多