开发者

import data from xml into database

i would like to import data into my database through an xml file:

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

The person table has same structure as the data from nodes. Is it handy to use entity fra开发者_运维百科mework/linq-to-xml ?


I don't know what you mean by "handy", but it is certainly possible.

You can map the XElement nodes to your LINQtoSQL/EF-generated objects quite easily, if the schemas match.

Your above code should result in an IEnumerable<XElement> with the XName "Person",

so from there you just need to do something like

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

You will need to do some conversions like the int.Parse() for some datatypes, because XElement.Value returns a string.

Then to save it to the database, let's assume MyDataContext is a LINQ to SQL generated DataContext object with a property People that is a Table<Person>. All you have to do is:

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


If the XML's format is right - i.e. if it uses the same format that the DataSet uses - you can just read it using DataSet.ReadXml() and then use all of the normal ADO tools for inserting the data into your database. Though it really helps if you've actually generated the XML from a DataSet in the first place and thus have a schema for ReadXml to use, because that resolves a lot of data type conversion issues that you'd otherwise have to take care of explicitly.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜