提问人:Krystian 提问时间:10/27/2023 最后编辑:Denis KiryanovKrystian 更新时间:10/29/2023 访问量:45
Docker 容器中的 EF 迁移问题
Problem with EF Migration in Docker Container
问:
我在将数据库迁移到 docker 容器时遇到问题。
在上述迁移过程中,我收到以下错误
System.InvalidOperationException: 'To change the IDENTITY property of a column, the column needs to be dropped and recreated.'
Docker-compose.yml:
version: '3.4'
networks:
backend:
services:
libraryapi:
container_name: Library-Api
image: ${DOCKER_REGISTRY-}libraryapi
build:
context: .
dockerfile: Dockerfile
networks:
- backend
ports:
- 8001:80
- 8003:443
environment:
- DB_HOST=librarydb
- DB_NAME=Library
- DB_SA_PASSWORD=q6ZOc32APBvTelKK6nlb0g31rVcWTq
librarydb:
container_name : Library-DB
image : mcr.microsoft.com/mssql/server:2022-latest
networks:
- backend
ports:
- 8002:1433
environment:
- ACCEPT_EULA=Y
- MSSQL_SA_PASSWORD=q6ZOc32APBvTelKK6nlb0g31rVcWTq
Docker文件:
FROM mcr.microsoft.com/dotnet/aspnet:6.0 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443
FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build
WORKDIR /src
COPY \["LibraryAPI.csproj", "."\]
RUN dotnet restore "./LibraryAPI.csproj"
COPY . .
WORKDIR "/src/."
RUN dotnet build "LibraryAPI.csproj" -c Release -o /app/build
FROM build AS publish
RUN dotnet publish "LibraryAPI.csproj" -c Release -o /app/publish /p:UseAppHost=false
FROM base AS final
WORKDIR /app
COPY --from=publish /app/publish .
ENTRYPOINT \["dotnet", "LibraryAPI.dll"\]
docker-compose-override(不管是什么):
version: '3.4'
services:
libraryapi:
environment:
- ASPNETCORE_ENVIRONMENT=Development
- ASPNETCORE_URLS=https://+:443;http://+:80
ports:
- "80"
- "443"
volumes:
- ${APPDATA}/Microsoft/UserSecrets:/root/.microsoft/usersecrets:ro
- ${APPDATA}/ASP.NET/Https:/root/.aspnet/https:ro
我正在通过Visual Studio中的Docker Compose项目启动我的应用程序
我已经删除了容器、docker 缓存,并多次重建了项目。我不知道我能做什么。
答:
-1赞
Denis Kiryanov
10/27/2023
#1
我相信这个问题是特定于数据库的,而不是与 Docker 相关的。请查看数据库迁移。它说您需要删除具有 identity 属性的列并重新创建它以应用迁移。您的 SQL 代码目前是错误的。
评论