添加迁移有效,但是我无法使用EF Core更新数据库

时间:2019-10-20 06:20:16

标签: c# .net-core entity-framework-core

添加迁移时,一切正常(Entity Framework Core 2.2.6-servicing-10079 initialized 'ConsultarDbContext' using provider 'Microsoft.EntityFrameworkCore.SqlServer' with options: None),但是当发生更新数据库错误时,我认为没有理由

我尝试更改迁移本身创建了一些字段,但是继续遇到相同的问题。

这是创建的迁移,在我看来一切正常

public partial class initial : Migration
    {
        protected override void Up(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.CreateTable(
                name: "PRODUTO",
                columns: table => new
                {
                    COD_PRODUTO = table.Column<string>(type: "varchar(100)", nullable: false),
                    DES_PRODUTO = table.Column<string>(type: "char(1)", nullable: true),
                    STA_STATUS = table.Column<string>(type: "char(1)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_PRODUTO", x => x.COD_PRODUTO);
                });

            migrationBuilder.CreateTable(
                name: "PRODUTO_COSIF",
                columns: table => new
                {
                    COD_PRODUTO = table.Column<string>(type: "varchar(100)", nullable: false),
                    COD_COSIF = table.Column<string>(type: "varchar(100)", nullable: false),
                    COD_CLASSIFICACAO = table.Column<string>(type: "char(6)", nullable: true),
                    STA_STATUS = table.Column<string>(type: "varchar(100)", nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_PRODUTO_COSIF", x => new { x.COD_PRODUTO, x.COD_COSIF });
                    table.ForeignKey(
                        name: "FK_PRODUTO_COSIF_PRODUTO_COD_PRODUTO",
                        column: x => x.COD_PRODUTO,
                        principalTable: "PRODUTO",
                        principalColumn: "COD_PRODUTO",
                        onDelete: ReferentialAction.Restrict);
                });

            migrationBuilder.CreateTable(
                name: "MOVIMENTO_MANUAL",
                columns: table => new
                {
                    DAT_MES = table.Column<int>(nullable: false),
                    DAT_ANO = table.Column<int>(nullable: false),
                    NUM_LANCAMENTO = table.Column<int>(nullable: false),
                    COD_PRODUTO = table.Column<int>(nullable: false),
                    COD_COSIF = table.Column<int>(nullable: false),
                    DES_DESCRICAO = table.Column<string>(type: "varchar(100)", maxLength: 50, nullable: true),
                    DAT_MOVIMENTO = table.Column<DateTime>(type: "smalldatetime", nullable: false),
                    COD_USUARIO = table.Column<string>(type: "varchar(100)", maxLength: 15, nullable: true),
                    VAL_VALOR = table.Column<double>(type: "double(18,2)", nullable: false),
                    ProdutoCosifCOD_PRODUTO = table.Column<string>(nullable: true),
                    ProdutoCosifCOD_COSIF = table.Column<string>(nullable: true)
                },
                constraints: table =>
                {
                    table.PrimaryKey("PK_MOVIMENTO_MANUAL", x => new { x.DAT_ANO, x.DAT_MES, x.NUM_LANCAMENTO, x.COD_PRODUTO, x.COD_COSIF });
                    table.ForeignKey(
                        name: "FK_MOVIMENTO_MANUAL_PRODUTO_COSIF_ProdutoCosifCOD_PRODUTO_ProdutoCosifCOD_COSIF",
                        columns: x => new { x.ProdutoCosifCOD_PRODUTO, x.ProdutoCosifCOD_COSIF },
                        principalTable: "PRODUTO_COSIF",
                        principalColumns: new[] { "COD_PRODUTO", "COD_COSIF" },
                        onDelete: ReferentialAction.Restrict);
                });

            migrationBuilder.CreateIndex(
                name: "IX_MOVIMENTO_MANUAL_ProdutoCosifCOD_PRODUTO_ProdutoCosifCOD_COSIF",
                table: "MOVIMENTO_MANUAL",
                columns: new[] { "ProdutoCosifCOD_PRODUTO", "ProdutoCosifCOD_COSIF" });
        }

        protected override void Down(MigrationBuilder migrationBuilder)
        {
            migrationBuilder.DropTable(
                name: "MOVIMENTO_MANUAL");

            migrationBuilder.DropTable(
                name: "PRODUTO_COSIF");

            migrationBuilder.DropTable(
                name: "PRODUTO");
        }
    }

这是PMC上的错误消息:

ailed executing DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
CREATE TABLE [MovimentosManuais] (
    [DAT_MES] int NOT NULL,
    [DAT_ANO] int NOT NULL,
    [NUM_LANCAMENTO] int NOT NULL,
    [COD_PRODUTO] int NOT NULL,
    [COD_COSIF] int NOT NULL,
    [DES_DESCRICAO] varchar(100) NULL,
    [DAT_MOVIMENTO] smalldatetime NOT NULL,
    [COD_USUARIO] varchar(100) NULL,
    [VAL_VALOR] double(18,2) NOT NULL,
    [ProdutoCosifCOD_PRODUTO] varchar(100) NULL,
    [ProdutoCosifCOD_COSIF] varchar(100) NULL,
    CONSTRAINT [PK_MovimentosManuais] PRIMARY KEY ([DAT_ANO], [DAT_MES], [NUM_LANCAMENTO], [COD_PRODUTO], [COD_COSIF]),
    CONSTRAINT [FK_MovimentosManuais_PRODUTO_COSIF_ProdutoCosifCOD_PRODUTO_ProdutoCosifCOD_COSIF] FOREIGN KEY ([ProdutoCosifCOD_PRODUTO], [ProdutoCosifCOD_COSIF]) REFERENCES [PRODUTO_COSIF] ([COD_PRODUTO], [COD_COSIF]) ON DELETE NO ACTION
);
System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near '('.
Incorrect syntax near 'ACTION'.
   at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction)
   at System.Data.SqlClient.SqlInternalConnection.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, DbCommandMethod executeMethod, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationCommand.ExecuteNonQuery(IRelationalConnection connection, IReadOnlyDictionary`2 parameterValues)
   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.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_1.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
ClientConnectionId:ca99d5b6-4f58-4bc8-950e-98c3962bf3ea
Error Number:102,State:1,Class:15
Incorrect syntax near '('.
Incorrect syntax near 'ACTION'.

0 个答案:

没有答案