我想通过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是否很方便?
答案 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
对象,其属性People
是Table<Person>
。您所要做的就是:
MyDataContext db = new MyDataContext();
db.People.InsertAllOnSubmit(people);
db.SubmitChanges();
答案 1 :(得分:1)
如果XML格式正确 - 即如果它使用DataSet
使用的相同格式 - 您只需使用DataSet.ReadXml()
读取它,然后使用所有常规ADO工具插入数据进入你的数据库。虽然如果您实际上从DataSet
实际生成了XML并因此具有ReadXml
的架构,这确实很有用,因为这解决了很多数据类型转换问题。否则必须明确地处理。