我正在编写一个MVC 5互联网应用程序,想知道如何在创建数据库时从seed
方法调用async
方法。
以下是我的代码:
public class ApplicationDbInitializer : CreateDatabaseIfNotExists<ApplicationDbContext>
{
protected override void Seed(ApplicationDbContext context) {
SetupAdminAndSampleObjectsDatabase();
base.Seed(context);
}
}
目前,在调用SetupAdminAndSampleObjectsDatabase
方法时,我收到以下错误:
System.NotSupportedException:在上一个异步操作完成之前,在此上下文中启动了第二个操作。使用“await”确保在调用此上下文上的另一个方法之前已完成任何异步操作。任何实例成员都不能保证是线程安全的。
这是该方法的定义:
public async Task SetupAdminAndSampleObjectsDatabase()
我在这个方法中添加了多个对象。
如果使用await
关键字调用SetupAdminAndSampleObjectsDatabase
方法,那么上述错误是否会被解决?
总之,我该如何从数据库seed
方法调用一个async
方法?这是可能的吗?
提前致谢。
SetupAdminAndSampleObjectsDatabase()
的返回类型更改为Task
(如果原来是void
)或Task<T>
(对于任何原始返回类型T
),以便能够等待它。 - akousmata