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