![](/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.