首页 > 解决方案 > 使同步数据库操作异步

问题描述

我想在 Asp.Net MVC 4.5.2 应用程序中使用批量数据库操作。有很好的 lib Z.EntityFramework.Extensions,但要 800 美元。和免费的 lib EF.BulkExtensions,但它不包含异步方法。问题:如果我会做这个把戏

await Task.Run(() => 
{ 
    MyDatabaseContext.BulkUpdate(entities); 
});

它会像我使用异步方法一样工作吗(就使用 IIS 的线程池而言)?

标签: c#asp.net-mvcentity-framework-6asp.net-4.5

解决方案


您至少应该执行以下操作:

var task = new Task(() => { MyDatabaseContext.BulkUpdate(entities) }, TaskCreationOptions.LongRunning);
await task;

这可确保您的任务在其自己的线程中运行,并且不会占用任务池中的任务。


推荐阅读