我们有一个包含~200个表的数据库模式.为每次迁移创建的模型快照(Migration.Designer.cs)是~20K行.因此,进行大量迁移确实会降低我们对CI的构建速度(构建解决方案的约30次迁移需要6分钟进行迁移,或者4分钟不进行迁移).
那么,问题是:删除旧迁移的模型快照是否安全(我们知道我们永远不会恢复)?模型快照是否用于除Revert-Migration之外的任何其他内容?
我有一个非常基本的迁移文件。我dotnet ef database update --verbose在包管理器控制台窗口中执行,但在 SQL Server 中没有生成任何内容。
包管理器控制台窗口中的最后几行输出如下所示:
Finding design-time services for provider Microsoft.EntityFrameworkCore.SqlServer...
Using design-time services from provider Microsoft.EntityFrameworkCore.SqlServer.
Finding design-time services referenced by assembly BM.Server.
No referenced design-time services were found.
Finding IDesignTimeServices implementations in assembly BM.Server...
No design-time services were found.
Done.
Run Code Online (Sandbox Code Playgroud)
这是我的代码的样子,添加和删除迁移工作。它只是试图更新我遇到此问题的数据库。
public class Program
{
public static void Main(string[] args)
{
CreateHostBuilder(args).Build().Run();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureWebHostDefaults(webBuilder =>
{
webBuilder.UseStartup<Startup>();
});
}
public class Startup
{
public void …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我有十多个迁移。http://screencast.com/t/CA2kZk3WCFj 但是当我尝试从头开始创建数据库时,EF 仅从标记迁移到底部开始。
如果我输入命令:update-database -targetMigration InitialCreate 这是响应:他指定的目标迁移“InitialCreate”不存在。确保目标迁移引用现有的迁移 ID。
如何解决此问题并使 EF 看到所有迁移?