Entity framework 复制数据库上的EF CodeFirst迁移要运行初始迁移吗

Entity framework 复制数据库上的EF CodeFirst迁移要运行初始迁移吗,entity-framework,entity-framework-migrations,Entity Framework,Entity Framework Migrations,我从生产中复制了一个数据库。就表/字段而言,与我的Dev DB的区别只是一个字段。该字段是在上次代码首次迁移时添加的。唯一未应用于生产的迁移 现在,我通过SQL脚本(模式+数据)中的DB导出导入将Azure DB复制到我的开发人员机器上的本地SQLExpress。只要我不需要这个字段,应用程序就可以正常运行。我希望通过运行“更新数据库”来添加该字段,而VS显然希望应用于第一次“初始”迁移。为什么?我检查了数据库中的uu MigrationHistory表,它有它,唯一缺少的记录是上次迁移中的mi

我从生产中复制了一个数据库。就表/字段而言,与我的Dev DB的区别只是一个字段。该字段是在上次代码首次迁移时添加的。唯一未应用于生产的迁移

现在,我通过SQL脚本(模式+数据)中的DB导出导入将Azure DB复制到我的开发人员机器上的本地SQLExpress。只要我不需要这个字段,应用程序就可以正常运行。我希望通过运行“更新数据库”来添加该字段,而VS显然希望应用于第一次“初始”迁移。为什么?我检查了数据库中的uu MigrationHistory表,它有它,唯一缺少的记录是上次迁移中的migrationid

任何有助于了解和解决问题的帮助都将不胜感激。VS update数据库如何确定应该应用哪个迁移

更新:

EF6

更新数据库的输出-详细

    PM> update-database -verbose
    Using StartUp project 'Mapato'.
    Using NuGet project 'Mapato'.
    Specify the '-Verbose' flag to view the SQL statements being applied to the target database.
    Target database is: 'MapatoCopyProductie' (DataSource: localhost\SQLEXPRESS_JSL, Provider: System.Data.SqlClient, Origin: Configuration).
    Applying explicit migrations: [201505170635248_Init, 201505191015284_[ActivityMaster] Added Duration, ...........

<continued list of all migrations>

Applying explicit migration: 201505170635248_Init.
CREATE TABLE [dbo].[Activities] (
    [Id] [int] NOT NULL IDENTITY,
    [TenantId] [int] NOT NULL,
    [IsActive] [bit] NOT NULL,
    [WorkYearId] [int] NOT NULL,
    [EnrollMentFee] [int] NOT NULL,
    [Currency] [int] NOT NULL,
    [RequiredAgreementId] [int],
    [ActivityMasterId] [int] NOT NULL,
    [Info] [nvarchar](max),
    CONSTRAINT [PK_dbo.Activities] PRIMARY KEY ([Id])
)
System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'Activities' in the database.
   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, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite)
   at System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<NonQuery>b__0(DbCommand t, DbCommandInterceptionContext`1 c)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteNonQuery()
   at System.Data.Entity.Migrations.DbMigrator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement migrationStatement, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinTransaction(IEnumerable`1 migrationStatements, DbTransaction transaction, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsWithinNewTransaction(IEnumerable`1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection, DbInterceptionContext interceptionContext)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatementsInternal(IEnumerable`1 migrationStatements, DbConnection connection)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClass30.<ExecuteStatements>b__2e()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.<>c__DisplayClass1.<Execute>b__0()
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
   at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(Action operation)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements, DbTransaction existingTransaction)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
   at System.Data.Entity.Migrations.DbMigrator.ExecuteOperations(String migrationId, VersionedModel targetModel, IEnumerable`1 operations, IEnumerable`1 systemOperations, 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(IEnumerable`1 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.UpdateInternal(String targetMigration)
   at System.Data.Entity.Migrations.DbMigrator.<>c__DisplayClassc.<Update>b__b()
   at System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   at System.Data.Entity.Migrations.Infrastructure.MigratorBase.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)
   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.Run()
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.AppDomain.DoCallBack(CrossAppDomainDelegate callBackDelegate)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Run(BaseRunner runner)
   at System.Data.Entity.Migrations.Design.ToolingFacade.Update(String targetMigration, Boolean force)
   at System.Data.Entity.Migrations.UpdateDatabaseCommand.<>c__DisplayClass2.<.ctor>b__0()
   at System.Data.Entity.Migrations.MigrationsDomainCommand.Execute(Action command)
ClientConnectionId:913026de-19a7-4ba5-83ea-dc5403995540
Error Number:2714,State:6,Class:16
There is already an object named 'Activities' in the database.
PM> 
PM>更新数据库-详细
使用启动项目“Mapato”。
使用NuGet项目“Mapato”。
指定'-Verbose'标志以查看应用于目标数据库的SQL语句。
目标数据库是:“MapatoCopyProductie”(数据源:localhost\SQLEXPRESS\u JSL,提供程序:System.Data.SqlClient,源代码:Configuration)。
应用显式迁移:[201505170635248_Init,201505191015284_[ActivityMaster]添加的持续时间。。。。。。。。。。。
应用显式迁移:201505170635248_Init。
创建表[dbo]。[活动](
[Id][int]不是空标识,
[TenantId][int]不为空,
[IsActive][bit]不为空,
[WorkYearId][int]不为空,
[EnrollMentFee][int]不为空,
[货币][int]不为空,
[RequiredAgreementId][int],
[ActivityMasterId][int]不为空,
[信息][nvarchar](最大值),
约束[PK_dbo.Activities]主键([Id])
)
System.Data.SqlClient.SqlException(0x80131904):数据库中已存在名为“活动”的对象。
位于System.Data.SqlClient.SqlConnection.OneError(SqlException异常,布尔断开连接,操作'1 wrapCloseInAction)
位于System.Data.SqlClient.SqlInternalConnection.OneError(SqlException异常,布尔断开连接,操作'1 wrapCloseInAction)
位于System.Data.SqlClient.TdsParser.ThroweException和Warning(TdsParserStateObject StateObjectStateObj、布尔调用方连接锁、布尔异步关闭)
位于System.Data.SqlClient.TdsParser.TryRun(RunBehavior RunBehavior、SqlCommand cmdHandler、SqlDataReader dataStream、BulkCopySimpleResultSet bulkCopyHandler、TdsParserStateObject stateObj、Boolean和dataReady)
位于System.Data.SqlClient.SqlCommand.RunExecuteOnQueryTds(字符串方法名、布尔异步、Int32超时、布尔异步写入)
位于System.Data.SqlClient.SqlCommand.InternalExecuteOnQuery(TaskCompletionSource`1完成,字符串方法名,布尔sendToPipe,Int32超时,布尔异步写入)
位于System.Data.SqlClient.SqlCommand.ExecuteOnQuery()处
在System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.b_u0(DbCommand t,DbCommandInterceptionContext`1c)中
在System.Data.Entity.Infrastructure.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget目标,Func`3操作,TInterceptionContext拦截Context,操作`3执行,操作`3执行)
位于System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand命令,DbCommandInterceptionContext interceptionContext)
位于System.Data.Entity.Internal.InterceptableDbCommand.ExecuteOnQuery()处
位于System.Data.Entity.Migrations.Dbmigator.ExecuteSql(MigrationStatement MigrationStatement,DbConnection connection,DbTransaction transaction,DbInterceptionContext interceptionContext)
位于System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorator.ExecuteSql(MigrationStatement MigrationStatement,DbConnection connection,DbTransaction transaction,DbInterceptionContext interceptionContext)
位于System.Data.Entity.Migrations.Dbmigator.ExecuteStatementInternal(IEnumerable`1 migrationStatements,DbConnection connection,DbTransaction transaction,DbInterceptionContext interceptionContext)
位于System.Data.Entity.Migrations.DbMigrator.ExecuteStatementSwithintTransaction(IEnumerable`1 migrationStatements,DbTransaction transaction,DbInterceptOnContext InterceptOnContext)
位于System.Data.Entity.Migrations.DbMigrator.ExecuteStatementSwitthingTransaction(IEnumerable`1 migrationStatements,DbConnection connection,DbInterceptOnContext InterceptOnContext)
位于System.Data.Entity.Migrations.Dbmigator.ExecuteStatementInternal(IEnumerable`1 migrationStatements、DbConnection connection、DbInterceptionContext interceptionContext)
位于System.Data.Entity.Migrations.DbMigrator.ExecuteStatementInternal(IEnumerable`1 migrationStatements,DbConnection)
在System.Data.Entity.Migrations.DbMigrator.c_uudisplayClass30.b_uu2e()中
在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.c__DisplayClass1.b__0()中
在System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1操作)中
位于System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute(操作操作)
位于System.Data.Entity.Migrations.DbMigrator.ExecuteStatements(IEnumerable`1 migrationStatements,DbTransaction existingTransaction)
位于System.Data.Entity.Migrations.Dmbmigator.ExecuteStatements(IEnumerable`1 migrationStatements)
位于System.Data.Entity.Migrations.Infrastructure.MigratorBase.ExecuteStatements(IEnumerable`1 migrationStatements)
位于System.Data.Entity.Migrations.Dbmigator.ExecuteOperations(字符串migrationId,VersionedModel targetModel,IEnumerable`1操作,IEnumerable`1系统操作,布尔降级,布尔自动)
位于System.Data.Entity.Migrations.DbMigrator.ApplyMigration(DbMigration migration,DbMigration lastMigration)
位于System.Data.Entity.Migrations.Infrastructure.MigratorLoggingDecorgo