【问题标题】:populating an Entity DataModel from XML using Linq使用 Linq 从 XML 填充实体数据模型
【发布时间】:2011-12-03 06:48:33
【问题描述】:

我有一个使用 ADO.NET 实体数据模型的 C# .net 3.5 应用程序。我正在从 XML 文件加载给定数据库条目的内容。 将List<String> 从 XML 转换为 EntityCollection<> 的最佳方法是什么?

XML 如下所示:

<Task>
    <Name>Test Task</Name>
    <SerialNumbers>
        <Serial>12345678901</Serial>
        <Serial>98765432101</Serial>
    </SerialNumbers>
</Task>

数据库如下所示:

task { [int, pk]TaskID }
criteria_serialnumber { [int, pk]SerialNumberID, [string]SerialNumber }
task_serialnumber { [int, pk]SerialNumberID, [int, pk]TaskID }

C# 代码如下所示:

using (XmlTextReader xml = new XmlTextReader(task_file))
{
    XElement x = XElement.Load(xml);

    // this works great.
    task.Name = x.Element("Name").Value;

    // How do I convert from List<String> to EntityCollection<criteria_serialnumber> ? 
    task.SerialNumbers = (from i in x.Element("SerialNumbers").Elements("Serial") select i.Value).ToList();
}

【问题讨论】:

    标签: c# xml linq entity-framework ado.net


    【解决方案1】:

    您无需将List&lt;string&gt; 转换为EntityCollection&lt;criteria_serialnumber&gt;。您只需将每个元素添加到现有的EntityCollection

    var serialNumbers = x.Element("SerialNumbers").Elements("Serial")
                         .Select(sn => sn.Value).ToList();
    
    foreach (var serialNumber in serialNumbers)
        task.SerialNumbers.Add(new SerialNumber { SerialNumber = serialNumber });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-06
      相关资源
      最近更新 更多