簡體   English   中英

Xamarin.Forms 沒有找到 EntityFramework.Core 的遷移

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM