使用EF加快XML上传到SQL Server的速度.通过应用架构来提高性能

本文关键字:应用 高性能 速度 XML 加快 EF Server SQL 使用 | 更新日期: 2023-09-27 18:20:37

我正在尝试将XML上传到SQL Server数据库,我使用实体框架。我有一个apx的XML。30MB,记录数为10k。仅仅上传一小部分数据就需要几分钟的时间。我在这篇文章《将XML数据分解到SQLServer数据库列的最佳方法》中读到,使用模式可以显著提高性能。我有一个xsd格式的模式文件,我该如何应用它?或者也许还有其他方法可以提高性能?我的代码的简化版本如下。

public ActionResult XmlLoaded() {
            XDocument root = XDocument.Load("..path..");
            XElement feed = root.Element("feed");
            IEnumerable<XElement> items = feed.Elements("item");
            foreach (XElement item in items)
            {
                XElement sku = item.Element("sku");
                XElement brand = item.Element("brand");
                Product product = new Product();
                product.ProductId = (int)sku;
                product.Brand = (string)brand;
                _productRepo.Add(product);
                _productRepo.SaveChanges();
            }

使用EF加快XML上传到SQL Server的速度.通过应用架构来提高性能

我宁愿在SQL Server中完成全部工作。您没有说明您正在使用的SQL Server的版本,但从2005年起,XML支持就一直存在,自2008年以来,它真的很棒。

有了这样的代码,您就可以一次性加载XML:

只需尝试一下:将其粘贴到一个空的查询窗口中,设置正确的文件路径并执行。过一段时间,您将看到XML结果(单击打开)。

DECLARE @yourXML AS XML=
(
SELECT CONVERT(XML, BulkColumn,2) AS BulkColumn
FROM OPENROWSET(BULK 'PathToFile.xml', SINGLE_BLOB) AS x
);
SELECT @yourXML;

如果您发布XML(其中的一部分),我将向您展示如何设置INSERT语句,该语句将读取、解析数据并将数据插入SQL表。这肯定比任何其他方法都快。。。整个过程所花费的时间不会比简单的阅读花费的时间多多少。如果您尝试上面的SQL,您大致知道整个过程需要多长时间。