我现在正在学习实体框架和Xamarin,并尝试使用数据库连接编写简单的待办事项列表。我发现并复制了此代码用于数据库连接,但我的IDE(Visual Studio 2017)输出错误,说await仅适用于具有async修饰符的方法。我试图在这里找到一些解决方案,但无法找到它。可能导致此问题的原因以及可能的修复方法是什么?
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();
提前致谢
答案 0 :(得分:0)
async
修饰符不是" Async"在#34; MigrateAsync"结束时 - 这只是一个命名惯例。编译器告诉您的是,您调用await
的方法是shuold被标记为异步的方法。
您没有使用整个方法,只包含代码段,但它必须是标记为async
并返回void
或Task
的方法:
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的基本教程,因为它了解 critical ,了解它们的使用方式。只是复制粘贴一个随机的代码片段是无法让事情发挥作用的: