首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从数据库种子方法调用异步方法

问从数据库种子方法调用异步方法
EN

Stack Overflow用户
提问于 2015-05-18 01:49:37
回答 1查看 2.5K关注 0票数 3

我正在编写一个MVC 5互联网应用程序,并想知道如何在创建数据库时从async方法调用seed方法。

这是我的代码:

代码语言:javascript
复制
public class ApplicationDbInitializer : CreateDatabaseIfNotExists<ApplicationDbContext> 
{
    protected override void Seed(ApplicationDbContext context) {            
        SetupAdminAndSampleObjectsDatabase();
        base.Seed(context);
    }
}

当前,当调用SetupAdminAndSampleObjectsDatabase方法时,我将得到以下错误:

System.NotSupportedException:在以前的异步操作完成之前,在此上下文上启动第二个操作。在此上下文中调用另一个方法之前,请使用“等待”确保任何异步操作都已完成。不保证任何实例成员都是线程安全的。

以下是方法定义:

代码语言:javascript
复制
public async Task SetupAdminAndSampleObjectsDatabase()

我正在此方法中添加多个对象。

如果使用SetupAdminAndSampleObjectsDatabase关键字调用await方法,那么上述错误是否正确?

因此,总之,如何从数据库async方法调用seed方法?这个是可能的吗?

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-18 02:43:31

你可以做两件事之一:

1)使种子方法异步,并使用等待。

代码语言:javascript
复制
protected override async void Seed(ApplicationDbContext context) {            
        await SetupAdminAndSampleObjectsDatabase();
        base.Seed(context);
    }

2)在异步方法上使用.WaitAndUnwrapException()

代码语言:javascript
复制
protected override void Seed(ApplicationDbContext context) {            
        SetupAdminAndSampleObjectsDatabase().WaitAndUnwrapException();
        base.Seed(context);
    }

希望这能帮上忙!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30294019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档