将数据从xml导入数据库

时间:2011-04-04 06:32:53

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

我想通过xml文件将数据导入我的数据库:

var doc = XDocument.Load(XMLFile);
var nodes = from e in doc.Descendants("Person")
                    where e.Element("PersonID").Value == "1"
                    select e;

person表与来自节点的数据具有相同的结构。使用实体框架/ linq-to-xml是否很方便?

2 个答案:

答案 0 :(得分:2)

我不知道“方便”是什么意思,但肯定是可能的。

如果模式匹配,您可以非常轻松地将XElement节点映射到LINQtoSQL / EF生成的对象。

您的上述代码应生成IEnumerable<XElement> XName“人”,

所以从那里你只需要做一些像

这样的事情
  IEnumerable<Person> people = nodes.Select(xe => new Person { 
                          PersonID = int.Parse(xe.Element("PersonID").Value), 
                          OtherProperty = xe.Element("OtherProperty").Value
                                 });

对于某些数据类型,您需要对int.Parse()进行一些转换,因为XElement.Value会返回一个字符串。

然后,为了将其保存到数据库,我们假设MyDataContext是一个LINQ to SQL生成的DataContext对象,其属性PeopleTable<Person>。您所要做的就是:

  MyDataContext db = new MyDataContext();
  db.People.InsertAllOnSubmit(people);
  db.SubmitChanges();

答案 1 :(得分:1)

如果XML格式正确 - 即如果它使用DataSet使用的相同格式 - 您只需使用DataSet.ReadXml()读取它,然后使用所有常规ADO工具插入数据进入你的数据库。虽然如果您实际上从DataSet实际生成了XML并因此具有ReadXml的架构,这确实很有用,因为这解决了很多数据类型转换问题。否则必须明确地处理。