![](/img/trans.png)
[英]Database.EnsureCreated does not seem that it's creating a database (xamarin.forms)
[英]How to use Database.Migration() after Database.EnsureCreated() EF Xamarin.Forms
我正在开发Xamarin.Forms应用程序,并使用EF 6面向.net standard 2.0 。 该应用程序通过我的DBContext类在应用程序商店中实时运行,如下所示。
public class DatabaseContext : DbContext
{
private readonly string _databasePath;
// Hotworks related tables
public DbSet<User> User { get; set; }
public DbSet<UserProfile> UserProfile { get; set; }
public DatabaseContext(string databasePath)
{
_databasePath = databasePath;
Database.EnsureCreated();
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlite($"Filename={_databasePath}");
}
}
现在,我必须在用户表中添加一个新列。 为此,我创建了一个.net核心控制台应用程序,并使用以下命令生成了迁移文件夹。
dotnet ef migrations add Initial
dotnet ef update database
然后,将生成的Migration文件夹复制到我的dbContext项目中,并将Database.EnsureCreated()更改为Database.Migration()但是,我得到了SQLite错误1:表“ User”已经存在 。 有什么帮助吗? 生产中的代码已经具有Database.EnsureCreated(),但是现在我必须迁移和更新数据库,但是它无法正常工作,并且总是让我得到表已存在的错误。
与我之前的评论相比,这是一种更安全的方法
add-migration Initial
等效于生产数据库的模型的add-migration Initial
值(即,在User
表中没有新添加的列,以及您部署到生产后所做的其他更改)。 __EFMigrationsHistory
以包括Initial
迁移。 add-migration XXX
。 Database.EnsureMigrate()
方法将XXX
应用于生产数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.