我在azure上托管.Net Web Api,api只是在sql server数据库中更新一行。这是我的Updatecode:
using (Storage ctx = new Storage())
{
string json = JsonConvert.SerializeObject(ev, _jsonsettings);
Data ex = ctx.dbsData.FirstOrDefault();
if (ex == null)
ctx.dbsData.Add(new Data() { Json = json, LastUpdate = DateTime.Now });
else
{
ex.Json = json;
ex.LastUpdate = DateTime.Now;
ctx.Entry(ex).State = EntityState.Modified;
}
ctx.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.OK);
}
我有第二种只清除表格的方法:
[HttpDelete]
public HttpResponseMessage Clear()
{
using (Storage ctx = new Storage())
{
ctx.dbsData.RemoveRange(ctx.dbsData);
ctx.SaveChanges();
return new HttpResponseMessage(HttpStatusCode.OK);
}
}
另见我的DbContext类:
public class Storage : DbContext
{
public DbSet<Data> dbsData { get; set; }
public Storage(string connectionstring) : base(connectionstring)
{
Configuration.LazyLoadingEnabled = false;
Configuration.ProxyCreationEnabled = false;
Configuration.ValidateOnSaveEnabled = false;
Configuration.AutoDetectChangesEnabled = false;
}
public Storage() : this("tom")
{
}
}
我的问题是,这两种方法都极其缓慢。我发现如果我删除SaveChanges()命令它执行得更快。所以我的问题是如何才能提高性能,为什么更新/删除一行需要花费很长时间?
答案 0 :(得分:-3)
这完全取决于表ctx.dbsData中的数据量。 ctx.dbsData.RemoveRange(ctx.dbsData);将那些行标记为仅删除。但更改只会在调用SaveChanges()后反映出来; 为了加快处理速度,您可以进行异步调用。