Sqlite Forms and EntityFrameworkCore 3.x如何正确创建数据库并应用迁移?
使用Xamarin.Forms和EntityFrameworkCore在Android/iOS设备上创建EF Core数据库的正确方法是什么 我遇到了重新创建vsSqlite Forms and EntityFrameworkCore 3.x如何正确创建数据库并应用迁移?,sqlite,xamarin.forms,entity-framework-core,entity-framework-migrations,Sqlite,Xamarin.forms,Entity Framework Core,Entity Framework Migrations,使用Xamarin.Forms和EntityFrameworkCore在Android/iOS设备上创建EF Core数据库的正确方法是什么 我遇到了重新创建vsMigrate的问题,由于我计划在将来更改数据库结构,我希望能够将这些迁移应用到现有数据库,因此我选择了迁移方法 但是,当我调用Migrate方法时,它似乎没有创建数据库。我已经设法让它工作起来,以防我事先在设备上复制预生成的数据库文件,但这不是我想要的。有没有办法让EF Core检查是否存在现有数据库,如果没有,则创建一个新数据库,然
Migrate
的问题,由于我计划在将来更改数据库结构,我希望能够将这些迁移应用到现有数据库,因此我选择了迁移方法
但是,当我调用Migrate
方法时,它似乎没有创建数据库。我已经设法让它工作起来,以防我事先在设备上复制预生成的数据库文件,但这不是我想要的。有没有办法让EF Core检查是否存在现有数据库,如果没有,则创建一个新数据库,然后对其应用挂起的迁移
以下是我迄今为止所做的工作:
netstandard2.0
更改为netcoreapp2.0;netstandard2.0
这样我就可以在上面运行PMC命令了- EntityFrameworkCore
- EntityFrameworkCore.Sqlite
- EntityFrameworkCore.Tools
- EntityFrameworkCore.设计
公共类问题
{
公共字符串Id{get;set;}
}
Migrate
方法的调用,以测试它是否有效公共部分类应用程序:应用程序{
//…其他代码
受保护的重写异步void OnStart()
{
base.OnStart();
使用(var db=newmytestcontext(_dbPath))
{
尝试
{
db.Database.Migrate();
db.Issues.Add(新问题
{
Id=“TestIssueId”
});
db.SaveChanges();
}
捕获(例外情况除外)
{
Debug.WriteLine(ex);
}
}
}
//…其他代码
}
\u dbPath
变量包含以下内容(在我测试它的Android上):
Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Personal),“test.db”);
在这一切之后,我得到了一个例外:
Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: Issues'.
总之,您的目标是自动将迁移应用到sql数据库和sqlite数据库?@Adlorem是的,没错。sql和sqlite有不同的模式。例如sqllite没有datetime的存储类型。这不是你能在开箱即用的东西。此外,还有一个问题是如何从代码中处理更新的数据库架构。归根结底,您的目标是自动将迁移应用到sql数据库和sqlite数据库?@Adlorem是的,没错。sql和sqlite有不同的架构。例如sqllite没有datetime的存储类型。这不是你能在开箱即用的东西。此外,还有一个问题是如何从代码中处理更新的数据库模式。
Microsoft.Data.Sqlite.SqliteException: SQLite Error 1: 'no such table: Issues'.