Entityframework Azure Sql DataBase非常慢

时间:2016-05-10 19:52:15

标签: c# entity-framework azure azure-sql-database

我使用EF Code First方法创建了一个简单的数据库(只有一个表)。我在Azure上托管数据库。现在我想从我的本地机器插入一些数据,但连接(通过互联网)非常慢。即使我使用没有EF的普通SqlCommands来插入数据,性能仍然很慢,但比EF快10倍。

这是我的插入代码:

            using (InfoContext ctx = new InfoContext(dbs))
            {
                ctx.Database.ExecuteSqlCommand("DELETE FROM Entries");
                ctx.dbsEvents.AddRange(list);
                ctx.SaveChanges();
            }

从我的观点来看,代码看起来很简单,所以问题必须是azure db连接。我正在使用带有5个DTU的基本层,这应该足够了。 任何想法我可以做些什么来增加azure数据库连接速度或者更新的另一种更快的方式来将数据上传到azure db?

1 个答案:

答案 0 :(得分:0)

我的猜测是你离Azure数据库服务器很远,当你在EF中添加一个对象列表时,它会发送一个单独的

insert .....
select @@identity // @@rowsaffected

这样可确保成功插入。因此,它意味着它在发送下一个插入语句之前等待每个插入的回复。

如果您不需要身份值

你可以尝试将SqlBulkCopy(BCP)放入数据库,虽然我不是100%肯定你可以进入Azure,我想你可以。

SqlBulkCopy - MSDN

还有一个批量插入助手,但与EF无关,将尝试

如果确实需要身份值

看看Fastest Way of Inserting in Entity Framework