gpt4 book ai didi

asp.net - 在单独的 Docker 容器中使用数据库时添加迁移会引发错误

转载 作者:行者123 更新时间:2023-12-04 12:16:56 24 4
gpt4 key购买 nike

我已经使用自动生成的身份设置创建了 dockerized ASP.net Core 应用程序(所以我已经有了默认的 Entity Framework 配置)。我已将 SQL Server 创建为单独的容器,这是我的 docker-compose.yml :

version: '3.4'

services:
blazorapp1:
image: blazorapp1
build:
context: .
dockerfile: Dockerfile
depends_on:
- db

db:
image: "mcr.microsoft.com/mssql/server"
environment:
SA_PASSWORD: "[SOMEPASSWORD]"
ACCEPT_EULA: "Y"


我已经测试了数据库配置:当 Visual Studio 为我生成身份设置时,我可以成功创建新用户,并且它们已正确存储在内存中。

然后我想创建新的数据库表:
public class ApplicationDbContext : IdentityDbContext
{

public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options)
: base(options)
{
}

public virtual DbSet<WeightLog> WeightLogs { get; set; }
}

为了应用这些更改,我使用了 Add-Migration WeightLogger在包管理器控制台中。

这是一个输出:
PM> Add-Migration WeightLogger
Build started...
Build succeeded.
An error occurred while accessing the Microsoft.Extensions.Hosting services. Continuing without the application service provider. Error: C:\root\.nuget\packages\microsoft.aspnetcore.identity.ui\3.1.1\staticwebassets\V4\
Unable to create an object of type 'ApplicationDbContext'. For the different patterns supported at design time, see https://go.microsoft.com/fwlink/?linkid=851728

这里有几件事我不明白。第一个错误指向 C:\root\.nuget\packages\microsoft.aspnetcore.identity.ui\3.1.1\staticwebassets\V4\这是不存在的。然后是第二个错误告诉我 ApplicationDbContext无法创建。链接指向我的网页,它告诉我:

When you create a new ASP.NET Core application, this hook is included by default.



那么,这是否意味着我不需要配置任何东西?为什么它不工作呢?使用 Docker 容器作为环境时,我应该以不同的方式创建迁移吗?

最佳答案

我遇到了完全相同的问题,最终通过从 Visual Studio 中删除 docker-compose 项目来解决它,只保留 docker-compose.yaml 并通过命令行管理它并解决它。

对于那些不想删除解决方案的 docker-compose 支持并面临同样问题的人,我认为可以通过为上下文实现设计时接口(interface)或使用 docker ef migrations add 来解决它。命令,但在所有情况下,这是一个应该报告给 Microsoft 的问题。

关于asp.net - 在单独的 Docker 容器中使用数据库时添加迁移会引发错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241372/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com