使用 Entity Framework 5 和 nuget 重新创建表 [英] Re-create table with Entity Framework 5 and nuget

查看:20
本文介绍了使用 Entity Framework 5 和 nuget 重新创建表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 Code First 创建表.

I am using Code First to create a table.

我创建了类、映射文件并在 nuget 中发出了 add-migration 命令,然后是 update-database 命令

I created the class, the mapping file and issued the add-migration command in nuget and then the update-database command

然后我改变了班级,像个白痴一样删除了表格.

I then changed the class and like an idiot deleted the table.

我删除了迁移类文件

我发出了添加迁移命令

当我发出更新数据库命令时,我收到以下错误:

When I issue the update-database command I get the following error:

System.Data.SqlClient.SqlException (0x80131904):找不到对象dbo.CorrectiveActionPlan",因为它不存在或者你存在没有权限.在System.Data.SqlClient.SqlConnection.OnError(SqlException 异常,Boolean breakConnection, Action1 wrapCloseInAction) atSystem.Data.SqlClient.SqlInternalConnection.OnError(SqlException异常,布尔 breakConnection,Action1 wrapCloseInAction) 在System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObjectstateObj, Boolean callerHasConnectionLock, Boolean asyncClose) atSystem.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior,SqlCommand cmdHandler、SqlDataReader 数据流、BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObjectstateObj, Boolean &数据就绪)在System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(字符串方法名,布尔异步,Int32 超时)在System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1完成,字符串方法名,布尔型 sendToPipe,Int32 超时,布尔 asyncWrite) 在System.Data.SqlClient.SqlCommand.ExecuteNonQuery() 在System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction事务,MigrationStatement 迁移语句)在System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction事务,MigrationStatement 迁移语句)在System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable1迁移声明)在System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable1迁移声明)在System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(字符串migrationId、XDocument targetModel、IEnumerable1 个操作、布尔值降级,布尔自动)在System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration迁移,DbMigration lastMigration)在System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration迁移,DbMigration lastMigration)在System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable1pendingMigrations, 字符串 targetMigrationId, 字符串 lastMigrationId)
在System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1pendingMigrations, 字符串 targetMigrationId, 字符串 lastMigrationId)
在 System.Data.Entity.Migrations.DbMigrator.Update(字符串目标迁移)在System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(字符串目标迁移)在System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore()在 System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run()ClientConnectionId:a6e92a35-cc9e-4867-97a5-0a274081d853 找不到对象dbo.CorrectiveActionPlan",因为它不存在或者您没有权限.

System.Data.SqlClient.SqlException (0x80131904): Cannot find the object "dbo.CorrectiveActionPlan" because it does not exist or you do not have permissions. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action1 wrapCloseInAction) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action1 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) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(DbTransaction transaction, MigrationStatement migrationStatement) at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable1 migrationStatements) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable1 migrationStatements) at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, XDocument targetModel, IEnumerable1 operations, Boolean downgrading, Boolean auto) at System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ApplyMigration(DbMigration migration, DbMigration lastMigration) at System.Data.Entity.Migrations.DbMigrator.Upgrade(IEnumerable1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.Upgrade(IEnumerable
1 pendingMigrations, String targetMigrationId, String lastMigrationId)
at System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) at System.Data.Entity.Migrations.Infrastructure.MigratorBase.Update(String targetMigration) at System.Data.Entity.Migrations.Design.ToolingFacade.UpdateRunner.RunCore() at System.Data.Entity.Migrations.Design.ToolingFacade.BaseRunner.Run() ClientConnectionId:a6e92a35-cc9e-4867-97a5-0a274081d853 Cannot find the object "dbo.CorrectiveActionPlan" because it does not exist or you do not have permissions.

如何强制 EF 重新创建表?

How do I force EF to recreate the table?

推荐答案

我找到了答案.

我删除了 [dbo].[__MigrationHistory] ​​中与我的 Migration 对应的行

I deleted the row in [dbo].[__MigrationHistory] that corresponded to my Migration

然后我删除了新的迁移文件

I then deleted the new migration file

我重新运行了添加迁移

然后重新运行 update-database -verbose

and then re-ran update-database -verbose

这篇关于使用 Entity Framework 5 和 nuget 重新创建表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆