繁体   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