| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- using System;
- using Microsoft.EntityFrameworkCore.Migrations;
- #nullable disable
- namespace Infrastructure.Persistence.Migrations
- {
- /// <inheritdoc />
- public partial class a7 : Migration
- {
- /// <inheritdoc />
- protected override void Up(MigrationBuilder migrationBuilder)
- {
- // 1. PopupPosition 테이블 생성
- migrationBuilder.CreateTable(
- name: "PopupPosition",
- columns: table => new
- {
- ID = table.Column<int>(type: "int", nullable: false, comment: "PK")
- .Annotation("SqlServer:Identity", "1, 1"),
- Code = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: false, comment: "위치 구분"),
- Subject = table.Column<string>(type: "nvarchar(255)", maxLength: 255, nullable: false, comment: "위치 명"),
- IsActive = table.Column<bool>(type: "bit", nullable: false, comment: "사용 여부"),
- UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true, comment: "수정 일시"),
- CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false, comment: "등록 일시")
- },
- constraints: table =>
- {
- table.PrimaryKey("PK_PopupPosition", x => x.ID);
- },
- comment: "팝업 위치");
- migrationBuilder.CreateIndex(
- name: "IX_PopupPosition_Code",
- table: "PopupPosition",
- column: "Code",
- unique: true);
- migrationBuilder.CreateIndex(
- name: "IX_PopupPosition_Code_IsActive",
- table: "PopupPosition",
- columns: new[] { "Code", "IsActive" });
- migrationBuilder.CreateIndex(
- name: "IX_PopupPosition_IsActive",
- table: "PopupPosition",
- column: "IsActive");
- // 2. 기본 위치 생성
- migrationBuilder.Sql(
- "INSERT INTO PopupPosition (Code, Subject, IsActive, CreatedAt) VALUES ('default', N'기본', 1, GETUTCDATE())");
- // 3. Popup 테이블에 PositionID 컬럼 추가 (기본값 = 기본 위치 ID)
- migrationBuilder.Sql(
- "ALTER TABLE Popup ADD PositionID int NOT NULL DEFAULT 0");
- // 4. 기존 팝업 데이터를 기본 위치로 매핑
- migrationBuilder.Sql(
- "UPDATE Popup SET PositionID = (SELECT TOP 1 ID FROM PopupPosition WHERE Code = 'default')");
- // 5. DEFAULT 제약 조건 제거
- migrationBuilder.Sql(@"
- DECLARE @name NVARCHAR(256)
- SELECT @name = dc.name
- FROM sys.default_constraints dc
- JOIN sys.columns c ON dc.parent_object_id = c.object_id AND dc.parent_column_id = c.column_id
- WHERE c.name = 'PositionID' AND dc.parent_object_id = OBJECT_ID('Popup')
- IF @name IS NOT NULL EXEC('ALTER TABLE Popup DROP CONSTRAINT ' + @name)");
- // 6. 인덱스 및 FK 추가
- migrationBuilder.CreateIndex(
- name: "IX_Popup_PositionID",
- table: "Popup",
- column: "PositionID");
- migrationBuilder.AddForeignKey(
- name: "FK_Popup_PopupPosition_PositionID",
- table: "Popup",
- column: "PositionID",
- principalTable: "PopupPosition",
- principalColumn: "ID",
- onDelete: ReferentialAction.Cascade);
- }
- /// <inheritdoc />
- protected override void Down(MigrationBuilder migrationBuilder)
- {
- migrationBuilder.DropForeignKey(
- name: "FK_Popup_PopupPosition_PositionID",
- table: "Popup");
- migrationBuilder.DropTable(
- name: "PopupPosition");
- migrationBuilder.DropIndex(
- name: "IX_Popup_PositionID",
- table: "Popup");
- migrationBuilder.DropColumn(
- name: "PositionID",
- table: "Popup");
- }
- }
- }
|