使用Linq从XML填充实体数据模型

本文关键字:实体 数据模型 填充 XML Linq 使用 | 更新日期: 2023-09-27 18:10:38

我有一个使用ADO的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();
}

使用Linq从XML填充实体数据模型

不需要将List<string>转换为EntityCollection<criteria_serialnumber>。您只需将每个元素添加到现有的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 });