[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.하지 EF 6입니다 첫째, 그것은 EF 핵심이다. 현재 EF 코어에는 -IgnoreChanges이 없다 (여기 참조)하지만 당신은 위 () 메소드에 모든 코드를 주석 및 마이그레이션을 적용하여 등가를 얻을 수 있습니다. 이것은 이후의 마이그레이션은 그 시점의 변경 사항 만 포함 할 정도로 현재의 모델 상태의 스냅 샷을합니다.
하지 EF 6입니다 첫째, 그것은 EF 핵심이다. 현재 EF 코어에는 -IgnoreChanges이 없다 (여기 참조)하지만 당신은 위 () 메소드에 모든 코드를 주석 및 마이그레이션을 적용하여 등가를 얻을 수 있습니다. 이것은 이후의 마이그레이션은 그 시점의 변경 사항 만 포함 할 정도로 현재의 모델 상태의 스냅 샷을합니다.
당신은 그냥 증분 모델 변화를 만들어 당신이 변경 사항을 제거해야 할 수도 있습니다 초기 기준이없는 그렇다면, 다시 변경 사항을 추가하고 두번째 마이그레이션을 추가, 기준선 이동을 적용합니다.
-
==============================
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 및 추가 마이그레이션을 다시 업데이트 데이터베이스에서 삭제 마이그레이션 내용
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
'SQL' 카테고리의 다른 글
[SQL] 정확한 배수 관계가 존재 SQL 만 선택 행 (0) | 2020.07.06 |
---|---|
[SQL] 결정 요인 및 후보 키 동일하거나 다른 일이 있습니까? (0) | 2020.07.06 |
[SQL] LINQ 조합 사용? (0) | 2020.07.06 |
[SQL] 동적 SQL와 열 이름을 통해 루핑 (0) | 2020.07.06 |
[SQL] 때 데이터베이스 트리거의 나쁜입니까? [복제] (0) | 2020.07.06 |