복붙노트

[SQL] 데이터베이스 오브젝트가 이미 존재하기 때문에 업데이트-Database 명령은 ASP.Net 코어 / 엔티티 프레임 워크 코어에서 작동하지 않습니다

SQL

데이터베이스 오브젝트가 이미 존재하기 때문에 업데이트-Database 명령은 ASP.Net 코어 / 엔티티 프레임 워크 코어에서 작동하지 않습니다

나는 명령 라인으로 내 데이터베이스를 업데이트했지만, 그때는 수동으로 테이블 중 하나를 업데이트했습니다.

이 업데이트를 데이터베이스에 내 능력을 방해 것으로 보인다. 내가 업데이트 할 때 다음과 같은 오류가 나타날 수 있습니다 :

 System.Data.SqlClient.SqlException: There is already an object named 'ClientsAndTestimonials' in the database.    at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose)
    at System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady)
   at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite)
    at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource`1 completion, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite, String methodName)
    at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
    at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.Execute(IRelationalConnection connection, String executeMethod, IReadOnlyDictionary`2 parameterValues, Boolean openConnection, Boolean closeConnection) 
    at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues, Boolean manageConnection) 
    at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationCommandExecutor.ExecuteNonQuery(IEnumerable`1 migrationCommands, IRelationalConnection connection) 
    at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration) 
    at Microsoft.EntityFrameworkCore.Design.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType) 
    at Microsoft.EntityFrameworkCore.Tools.Cli.DatabaseUpdateCommand.<>c__DisplayClass0_0.<Configure>b__0() 
    at Microsoft.Extensions.CommandLineUtils.CommandLineApplication.Execute(String[] args)
    at Microsoft.EntityFrameworkCore.Tools.Cli.Program.Main(String[] args)
 ClientConnectionId:d89989a8-ce8b-4167-be7e-fcddc4bcdf98
 Error Number:2714,State:6,Class:16
 There is already an object named 'ClientsAndTestimonials' in the database. 

나는 지난 몇 일 동안이 문제를 해결하기 위해 노력하고있다. 대부분의 동료 개발자는 다음 링크에서 존 Salewski처럼 -IgnoreChanges을 "재설정"추가 마이그레이션을 사용하는 몇 가지 변화를 제안한다.

그러나, 나는라는 오류가 계속 "A 매개 변수는 그 이름 'IgnoreChanges'매개 변수 일치를 찾을 수 없습니다."

모든 제안을 주시면 감사하겠습니다!

해결법

  1. ==============================

    1.하지 EF 6입니다 첫째, 그것은 EF 핵심이다. 현재 EF 코어에는 -IgnoreChanges이 없다 (여기 참조)하지만 당신은 위 () 메소드에 모든 코드를 주석 및 마이그레이션을 적용하여 등가를 얻을 수 있습니다. 이것은 이후의 마이그레이션은 그 시점의 변경 사항 만 포함 할 정도로 현재의 모델 상태의 스냅 샷을합니다.

    하지 EF 6입니다 첫째, 그것은 EF 핵심이다. 현재 EF 코어에는 -IgnoreChanges이 없다 (여기 참조)하지만 당신은 위 () 메소드에 모든 코드를 주석 및 마이그레이션을 적용하여 등가를 얻을 수 있습니다. 이것은 이후의 마이그레이션은 그 시점의 변경 사항 만 포함 할 정도로 현재의 모델 상태의 스냅 샷을합니다.

    당신은 그냥 증분 모델 변화를 만들어 당신이 변경 사항을 제거해야 할 수도 있습니다 초기 기준이없는 그렇다면, 다시 변경 사항을 추가하고 두번째 마이그레이션을 추가, 기준선 이동을 적용합니다.

  2. ==============================

    2.사용 알터 열 대신하는 addColumn 최대 () 함수

    사용 알터 열 대신하는 addColumn 최대 () 함수

        migrationBuilder.AlterColumn<bool>(
            name: "IsActive",
            table: "Advertisements",
            nullable: false,
            defaultValue: true);
    

    또는

          public override void Up()
          {
            AddColumn("dbo.Products", "Description", c => c.String(maxLength: 50));
          }
    

    asp.net 마이그레이션

    당신이 데이터베이스에 대한 전체 효과 싶지 않는 경우에는 최대 기능의 일부를 발언 할 수있다.

    마이그레이션 명령들을 만들기위한 angried합니다. 재설정하고 REBASE 마이그레이션. 어떻게: 양쪽으로 VisualStudio와 SQL 및 추가 마이그레이션을 다시 업데이트 데이터베이스에서 삭제 마이그레이션 내용

  3. from https://stackoverflow.com/questions/43687433/update-database-command-is-not-working-in-asp-net-core-entity-framework-core-b by cc-by-sa and MIT license