我在 Xamarin.iOS 应用程序中使用 Entity Framework Core。
在我的核心项目中,包含在 iOS 应用程序和其他应用程序之间共享的代码 (.netstandard 2.0),我想知道是否需要迁移,以便我也可以执行一些其他操作。
这是上下文:
public void Initialize()
{
using (var dbContext = new MyDbContext(m_dbContextOptions))
{
--> bool isNeeded = demoTapeDbContext.Database.IsMigrationNeeded()
demoTapeDbContext.Database.Migrate();
}
}
我发现的最接近的是调用该方法GetPendingMigrationsAsync()
并检查待处理迁移的数量,但我不确定这是否是在实体框架中进行此类检查的最安全方法:
public async Task InitializeAsync()
{
using (var dbContext = new MyDbContext(m_dbContextOptions))
{
bool isMigrationNeeded = (await demoTapeDbContext.Database.GetPendingMigrationsAsync()).Any();
demoTapeDbContext.Database.Migrate();
}
}
你是对的GetPendingMigrationsAsync
方法是你应该使用的。从the docs https://learn.microsoft.com/en-us/dotnet/api/microsoft.entityframeworkcore.relationaldatabasefacadeextensions.getpendingmigrationsasync?view=efcore-2.0:
异步获取程序集中定义但尚未应用于目标数据库的所有迁移。
如果你看the code https://github.com/dotnet/efcore/blob/594a626af9c6e3f090723768856557eede022e24/src/EFCore.Relational/Extensions/RelationalDatabaseFacadeExtensions.cs#L85,您可以追踪它是如何工作的。如果获取程序集中定义的所有迁移,并删除通过查询数据库找到的迁移。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)