Docker 容器中 EF 迁移问题

问题描述 投票:0回答:1

我在将数据库迁移到 Docker 容器时遇到问题。

在上述迁移过程中,我收到以下错误

System.InvalidOperationException:“要更改列的 IDENTITY 属性,需要删除并重新创建该列。”

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    

Dockerfile:

#请参阅 https://aka.ms/containerfastmode 了解 Visual Studio 如何使用此 Dockerfile 构建映像以加快调试速度。

来自 mcr.microsoft.com/dotnet/aspnet:6.0 AS 基础

工作目录/应用程序

暴露80

暴露443

来自 mcr.microsoft.com/dotnet/sdk:6.0 AS 版本

工作目录/src

复制[“LibraryAPI.csproj”,“。”]

运行 dotnet 恢复“./LibraryAPI.csproj”

复制。 .

工作目录“/src/。”

运行 dotnet build "LibraryAPI.csproj" -c Release -o /app/build

FROM 构建 AS 发布

RUN dotnet 发布“LibraryAPI.csproj”-c Release -o /app/publish /p:UseAppHost=false

来自基础 AS 最终

工作目录/应用程序

复制--from=发布/应用程序/发布。

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缓存,并多次重建了项目。我不知道我能做什么。

sql-server entity-framework asp.net-web-api docker-compose
1个回答
0
投票

我认为这个问题是特定于数据库的,而不是与 Docker 相关的。请查看数据库迁移。它表示您需要删除具有标识属性的列并重新创建它以应用迁移。您的 SQL 代码目前是错误的。

© www.soinside.com 2019 - 2024. All rights reserved.