EF Core从2.1.4升级至5/6版本添加迁移遇Int转Long错误
EF Core升级后添加迁移时出现Int32转Int64的类型转换错误
将Entity Framework Core从2.1.4版本升级到5.0.5或6.0.*版本前,我未对数据库或模型做任何修改,但执行添加迁移命令时抛出以下错误:
Unable to cast object of type 'System.Int32' to type 'System.Int64'.
使用的命令为:
dotnet ef migrations -v add ChangeNameExample -o Models/Db/Migrations
我已经检查过所有数据库表列与模型类型的匹配关系(比如SQL的bigint对应模型的long类型),重点排查了DbContext类,也查阅了EF Core升级的重大变更说明,但没找到相关问题。接下来打算尝试新建项目,确认是否需要修改modelBuilder的配置。
补充:通过在OnConfiguration()中启用详细日志后,得到完整的堆栈跟踪信息:
System.InvalidCastException: Unable to cast object of type 'System.Int32' to type 'System.Int64'. at lambda_method34(Closure , IUpdateEntry ) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.SimplePrincipalKeyValueFactory`1.CreateFromCurrentValues(IUpdateEntry entry) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.IdentityMap`1.Add(InternalEntityEntry entry) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.StartTracking(InternalEntityEntry entry) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState oldState, EntityState newState, Boolean acceptChanges, Boolean modifyProperties) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.SetEntityState(EntityState entityState, Boolean acceptChanges, Boolean modifyProperties, Nullable`1 forceStateWhenUnknownKey) at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.InternalEntityEntry.Microsoft.EntityFrameworkCore.Update.IUpdateEntry.set_EntityState(EntityState value) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.TrackData(IRelationalModel source, IRelationalModel target, DiffContext diffContext) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDataOperations(IRelationalModel source, IRelationalModel target, DiffContext diffContext)+MoveNext() at System.Linq.Enumerable.ConcatIterator`1.MoveNext() at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable`1 operations, DiffContext diffContext) at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDifferences(IRelationalModel source, IRelationalModel target) at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName, String rootNamespace, String subNamespace, String language) at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType, String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name, String outputDir, String contextType, String namespace) at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0() at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action) Unable to cast object of type 'System.Int32' to type 'System.Int64'.
请问是否有人遇到过类似问题?
内容的提问来源于stack exchange,提问作者steveoshima
相关产品推荐
相关产品推荐

