首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Await请勿使用migrateasync()

Await请勿使用migrateasync()
EN

Stack Overflow用户
提问于 2018-04-22 18:29:03
回答 1查看 500关注 0票数 0

我现在正在学习Entity Framework和Xamarin,并试图写出与数据库连接的简单待办事项列表。我找到并复制了这段用于数据库连接的代码,但我的IDE (Visual Studio 2017)输出错误,说await只适用于带有异步修饰符的方法。我试着在这里找到一些解决方案,但找不到。可能导致此问题的原因以及可能的修复方法是什么?

代码语言:javascript
复制
var dbFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
var fileName = "Tasks.db";
var dbFullPath = dbFolder+"\\"+fileName;
mainContext = new TaskContext(dbFullPath);
await mainContext.Database.MigrateAsync();

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2018-04-22 18:33:44

async修饰符并不是"MigrateAsync“末尾的"Async”--这只是一个命名约定。编译器告诉你调用await的方法应该被标记为async。

您没有带来整个方法,只带来了代码片段,但它必须是一个标记为async并返回voidTask的方法

代码语言:javascript
复制
public async void Migrate()
{
    var dbFolder = System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal);
    var fileName = "Tasks.db";
    var dbFullPath = dbFolder+"\\"+fileName;
    mainContext = new TaskContext(dbFullPath);
    await mainContext.Database.MigrateAsync();
}

这是因为调用await会影响调用方法,而不是被调用的方法。它使封装的Migrate方法停止执行,将控制权返回给调用者,并构建幕后状态机以恢复执行。调用方是一个异步方法。

我建议复习一下async/await的基本教程,因为理解它们的使用方式是至关重要的。只是复制-粘贴一个随机的代码片段并不是让事情正常工作的方法:

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

https://stackoverflow.com/questions/49964926

复制
相关文章

相似问题

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