我正在尝试解析一个XML文件(4层嵌套),并使用模型构建器将这些值附加到本地数据库中。我正在努力完成这一部分,所以我真的很感谢你的帮助。而且,正如你将看到的,我对这种语言和框架真的很陌生。
<machines>
<machine>
<manufacturer>SDBSDBSDKB</manufacturer>
<name>NKSDBSDKJBDSKBDB</name>
<description>
<DEU>JBSDSBDKKJ</DEU>
<ENU>NDSIDBSSKBKJB</ENU>
</description>
<type>DSIBDSDBJKSD</type>
<number>0-200-84-3151</number>
<cfg_r>
<connection>JJSBJSBKDSJDBS</connection>
<cfg_r_text> JHBSJBDISBKDBSKDBSBDKBSDKLN </cfg_r_text>
<cfg_r_physical_unit_abbreviation> KBJSBDKSKJBSDSKJB
</cfg_r_physical_unit_abbreviation>
<cfg_r_displaytext> JSDHSDVSDVSDDSKBJDB
</cfg_r_displaytext>
</cfg_r>
</machine>
</machines>
下面是我正在尝试使用的一个xml文件的类似片段。特别是我正在尝试为一个'machine' dbset(级别2)创建一个模型构建器。“description”对象是这个machine dbset的属性的一部分;这里我用了一个外键来Map它,比如说:
[ForeignKey(nameof(MachineDescription.Id))]
public int DescriptionID { get; set; }
下面是MachineDescription类的说明
public class MachineDescription
{
public int Id { get; set; }
public string DEU_desc { get; set; }
public string ENU_desc { get; set; }
[ForeignKey(nameof(Machine.Id))]
public MachineDescription MachineId { get; set; }
}
最后,这是我的建模工具:
modelBuilder.Entity<Models.Machine>().HasData(from machine in placeholder.Elements("machine")
select new Models.Machine
{
Id = idx++,
Manufacturer = machine.Element("manufacturer").Value,
Name = machine.Element("name").Value,
MachinesDecriptions.Append(
new MachineDescription
{
Id = descID++,
DEU_desc = machine.Element("description").Element("DEU").Value,
ENU_desc = machine.Element("description").Element("ENU").Value,
MachineId = descID
}),
Type = machine.Element("type").Value,
Number = machine.Element("number").Value,
});
我希望得到一些帮助,让我的MachineDescription在我的Machine类中引用。手动添加它们不是一个选项
1条答案
按热度按时间qxgroojn1#
就像@ YitzhakKhabinsky在评论中提到的那样,最好只是将xml传递到数据库,并允许在那里解析它。
下面是一些示例代码,可以帮助您入门。