update-database 报错

来源:11-6 【应用】用户模型设计与数据库更新

朱钢同学

2021-11-20

老师,我执行updata-database时报错:
图片描述

PM> update-database
Build started...
Build succeeded.
System.InvalidCastException: Unable to cast object of type 'System.Guid' to type 'System.String'.
   at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerStringTypeMapping.GenerateNonNullSqlLiteral(Object value)
   at Microsoft.EntityFrameworkCore.Storage.RelationalTypeMapping.GenerateProviderValueSqlLiteral(Object value)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.AppendSqlLiteral(StringBuilder commandStringBuilder, ColumnModification modification, String tableName, String schema)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.AppendWhereCondition(StringBuilder commandStringBuilder, ColumnModification columnModification, Boolean useOriginalValue)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.<AppendWhereClause>b__21_0(StringBuilder sb, ColumnModification v)
   at System.Text.StringBuilderExtensions.AppendJoin[T](StringBuilder stringBuilder, IEnumerable`1 values, Action`2 joinAction, String separator)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.AppendWhereClause(StringBuilder commandStringBuilder, IReadOnlyList`1 operations)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.AppendUpdateCommand(StringBuilder commandStringBuilder, String name, String schema, IReadOnlyList`1 writeOperations, IReadOnlyList`1 conditionOperations)
   at Microsoft.EntityFrameworkCore.Update.UpdateSqlGenerator.AppendUpdateOperation(StringBuilder commandStringBuilder, ModificationCommand command, Int32 commandPosition)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(UpdateDataOperation operation, IModel model, MigrationCommandListBuilder builder)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.<>n__2(UpdateDataOperation operation, IModel model, MigrationCommandListBuilder builder)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.<>c__DisplayClass34_0.<Generate>b__0(MigrationCommandListBuilder b)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.GenerateExecWhenIdempotent(MigrationCommandListBuilder builder, Action`1 generate)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(UpdateDataOperation operation, IModel model, MigrationCommandListBuilder builder)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.<>c.<.cctor>b__83_30(MigrationsSqlGenerator g, MigrationOperation o, IModel m, MigrationCommandListBuilder b)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(MigrationOperation operation, IModel model, MigrationCommandListBuilder builder)
   at Microsoft.EntityFrameworkCore.Migrations.MigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model, MigrationsSqlGenerationOptions options)
   at Microsoft.EntityFrameworkCore.Migrations.SqlServerMigrationsSqlGenerator.Generate(IReadOnlyList`1 operations, IModel model, MigrationsSqlGenerationOptions options)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.GenerateUpSql(Migration migration, MigrationsSqlGenerationOptions options)
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.<>c__DisplayClass16_2.<GetMigrationCommandLists>b__2()
   at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
   at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
   at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Unable to cast object of type 'System.Guid' to type 'System.String'.
写回答

1回答

阿莱克斯刘

2021-11-23

请检查一下用户模型的id类型以及ApplicationDbContext的设置,报错显示“无法把guid转化为string”。或者你也可以试试把项目目录下的migration文件夹全部删掉,然后重新做dotnet ef add migration 以及 database update。如果还不行,请把代码发给我邮箱382231334@qq.com,一定一定要在技术群里at我一下,要不然你的邮件就沉了。。。


0
1
朱钢同学
谢谢,老师,删出migration文件夹再重新创建问题就解决了,但是这是什么原因呢老师
2021-11-28
共1条回复

.Net 开发电商后端API 从0到精通RESTful

. Net 实战+RESTful思想纵深课程,开发优雅RESTful风格API。

977 学习 · 547 问题

查看课程