Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在使用迁移更新数据库期间修复关键字“NOT”附近的错误语法_C#_Asp.net_.net Core_Asp.net Core Webapi - Fatal编程技术网

C# 如何在使用迁移更新数据库期间修复关键字“NOT”附近的错误语法

C# 如何在使用迁移更新数据库期间修复关键字“NOT”附近的错误语法,c#,asp.net,.net-core,asp.net-core-webapi,C#,Asp.net,.net Core,Asp.net Core Webapi,我是软件开发新手。我目前正在开发Asp.Net核心API。我成功地完成了添加迁移,当我需要更新数据库时,问题就开始了 错误如下 System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'NOT'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnectio

我是软件开发新手。我目前正在开发Asp.Net核心API。我成功地完成了添加迁移,当我需要更新数据库时,问题就开始了

错误如下

System.Data.SqlClient.SqlException (0x80131904): Incorrect syntax near the keyword 'NOT'.
   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:9cf19409-67c7-4553-b2f9-5407db27d008
Error Number:156,State:1,Class:15
Incorrect syntax near the keyword 'NOT'.

非常感谢您的帮助。

在创建数据库的初始迁移过程中,我遇到了同样的问题。 PMC控制台在关键字“NOT”附近抛出不正确的语法。错误 调试几分钟后,我发现 .HasColumnTypevarchar3;属性,该属性用于其中一个字段。 似乎在迁移过程中,自动生成的迁移文件中丢失了一个括号-它看起来像是HasColumnTypevarchar3,而应该像这样的HasColumnTypevarchar3

我在/Migrations/.ModelSnapshot.cs中发现了这一点,包括Up和down方法。 and/Migrations/.20190613110239_InitialCreate

在这两个位置添加括号后,“更新数据库”命令按预期工作

我希望这会有帮助!愉快的编码。

如中突出显示的,您可能需要检查自动生成的文件是否存在错误。请注意,调试器可能不会突出显示该错误,因为它不是语法错误,而是字符串错误。下面是一段代码,展示了我是如何解决这个问题的

自动生成错误代码

修正码


您必须在migrationName.cs和migrationName.Designer.cs中纠正此错误。

原因:原因主要是您在模型类中执行了语法错误,该类将作为表插入数据库中

解决方案:

您可以删除上次迁移、编辑模型类、创建新迁移和更新数据库。 您可以正确编辑迁移文件 例如: 这是我在模特课上犯的第一个错误 [ColumnTypeName=decimal18,2]公共十进制价格{get;set;}小数点18,2中缺少的第一个括号。 然后我删除了以前的迁移,添加了第一个括号,创建了新的迁移并更新了数据库。
它工作得很好。

仅仅提供堆栈转储而没有源代码是没有帮助的。您能提供一个出现错误的代码吗?很难给出解决方案。请检查您的查询语法?
 Price = table.Column<decimal>(type: "decimal(18, 2", nullable: false)
 Price = table.Column<decimal>(type: "decimal(18, 2)", nullable: false)