我想用数据初始化数据库,只要这些数据不存在。在这个例子中,每当表格#34; Country"为空,将插入数据。以下是来自" Startup"的代码。类:
$CDrive = Get-Content $PSScriptRoot\SaveMe.txt | where { $_ -match 'C:\\(?!Windows\\|Program Files\\|Program Files \(x86\)\\).+'}
$EDrive = Get-Content $PSScriptRoot\SaveMe.txt | where { $_ -match 'E:\\(?!Windows\\|Program Files\\|Program Files \(x86\)\\).+'}
$GDrive = Get-Content $PSScriptRoot\SaveMe.txt | where { $_ -match 'G:\\(?!Windows\\|Program Files\\|Program Files \(x86\)\\).+'}
指定的行会产生编译警告"由于不等待此调用,因此在调用完成之前会继续执行当前方法"。好的,它是一种同步方法,我正在调用异步方法。解决此问题的最佳方法是什么(两个选项都很好:在继续执行时启动异步处理数据插入,或等待其完成然后继续)。
另外,我想知道使用ApplicationDbContext.OnModelCreating而不是Startup.Configure来描述数据库初始化是否更好。
答案 0 :(得分:-1)
如果您不需要结果,那么您只需返回void而不是Task.That会为您节省警告
private static async void AddCountries(ApplicationDbContext db)
{
if (db.Country.Any())
{
return; // DB has been seeded
}
db.AddRange(
new Country { Name = "England", Code = "En" },
new Country { Name = "France", Code = "Fr" }
);
db.SaveChanges();
}
但是你应该使用await执行实际操作(Task)而不是计算行数。