[英]Xamarin.Forms doesn't find migrations of EntityFramework.Core
我想知道我做錯了什么,因為 EnsureCreated() 可以按我的意願工作,但 Migrate() 不起作用,因為找不到任何遷移。
這是一些代碼:
public SqliteContext(string FileName)
{
this.FileName = FileName;
Database.EnsureCreated();
}
作品
但是當我做同樣的事情時:
public SqliteContext(string FileName)
{
this.FileName = FileName;
Database.Migrate();
}
它沒有。 所以我檢查了一下,似乎沒有發現任何遷移。 但是我的遷移與我的 SqliteContext/dbContext 在同一個項目中。 (在 map 遷移中)所以我假設我不必指定遷移程序集,但我也這樣做了,但它仍然不起作用。
有關一些額外信息:
我的遷移由 Microsoft.EntityFrameworkCore.Tools 生成。
我在用:
Microsoft.EntityFrameworkCore.Tools 3.1.12
Microsoft.EntityFrameworkCore.Sqlite 3.1.12
Xamarin.Forms 5.0.0.2012
Xamarin.Essentials 1.6.1
FileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "narco.db"
似乎我找到了解決方案。
public class DbMigrationContext : SqliteContext
{
public DbContext() : base(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "narco.db"))
{
}
}
我將此 class 添加到我的核心項目中,因此如果我在項目中使用的上下文有任何更改,它們會自動反映在我用於創建遷移的上下文中。
[DbContext(typeof(DbMigrationContext))]
放在我的遷移之上,因此找不到。 所以當我把它改成
[DbContext(typeof(SqliteContext))]
它現在按預期工作。 所以我想從現在開始,我將使用我的 SqliteContext 斷開對我的項目的引用,然后將其復制過來以避免這樣的問題。
希望遇到此問題的人會發現這很有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.