EF Core 2.0 迁移,在附属程序集和用户机密中使用上下文



我有一个API项目,它是Core 2.0应用程序的正常启动 ASP.NET。

此解决方案还具有包含 DbContext 的附属程序集。

在附属程序集目录中打开命令提示符并尝试运行如下 CLI 命令:

dotnet ef migrations add UserAccountFields

这导致:

尚未为此 DbContext 配置任何数据库提供程序。一个 提供程序可以通过重写 DbContext.OnProvisioning 来配置。 方法或使用应用程序服务提供程序上的 AddDbContext。

这是有道理的,因为没有任何有效的配置可供读取。 CLI 似乎不允许在命令本身中指定提供程序或连接字符串。 但是,您可以在从现有数据库搭建上下文的基架时,但我们首先使用代码,因此这是不可能的。

如果我切换到根应用程序项目的目录并尝试:

dotnet ef migrations add UserAccountFields -c ErsSecurityContext

我收到错误:

找不到匹配命令"dotnet-ef"的可执行文件

这也是有道理的,因为根应用程序不包含对 EF NuGet 的引用,我们不希望它包含。

我们的连接字符串也存储在用户机密中,这使情况进一步复杂化。

如何通过重写 OnConfigure 方法使此方案正常工作,而不会导致代码中的连接字符串分散?

我被难住了。我们的架构很好,但这是一个完整的表演障碍,我不知道如何使用任何不错的 CLI 东西来搭建迁移的脚手架。

所以在阅读了Mark G提供的链接之后。

https://github.com/aspnet/EntityFrameworkCore/issues/10806

我现在可以使用对命令的这个简单更改来创建迁移。 导航到包含上下文和迁移的项目的目录,在此处打开命令提示符并使用:

dotnet ef migrations add <migration-name> -c <context-name> --startup-project <relative-path-to-startup-csproj-file>

这也适用于其他命令,例如:

dotnet ef database update --startup-project <relative-path-to-startup-csproj-file>
dotnet ef migrations remove --startup-project <relative-path-to-startup-csproj-file>

最新更新