我使用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?
答案 0 :(得分:0)
我的猜测是你离Azure数据库服务器很远,当你在EF中添加一个对象列表时,它会发送一个单独的
insert .....
select @@identity // @@rowsaffected
这样可确保成功插入。因此,它意味着它在发送下一个插入语句之前等待每个插入的回复。
你可以尝试将SqlBulkCopy(BCP)放入数据库,虽然我不是100%肯定你可以进入Azure,我想你可以。
还有一个批量插入助手,但与EF无关,将尝试