小编Dia*_*ana的帖子

数据库还原后,EF不会迁移

我疯了......我一直在尝试编写恢复数据库的集成测试.在编写这些测试的过程中,我一直在玩我的SQL Server用户设置.最后,我拔掉了插头.但是现在我陷入了我的数据库不再被迁移的境地......

我不断收到错误System.Data.SqlClient.SqlException: Invalid object name 'dbo.SomeObjectThatWasCreated2MigrationsAgo'.

__Migrations中的迁移落后了,它们不会得到更新.没有错误消息,只是一个明显的'不,不能找到那个表'

请帮助..我在SQL Server中需要哪些设置才能再次允许迁移?

我已设置权限db_datareader,db_datawriter,db_ddladmin甚至db_owner,但我的IIS_APPPOOL用户就不会启动迁移

编辑

自上次迁移以来,没有任何代码发生任何变化.没有本地变化.没有.当我恢复数据库的备份时,会发生这种情况.然后,一旦达到此状态,删除数据库甚至不再有帮助,不会生成新的数据库.

D'你知道最后修复了什么,经过几个小时的搞乱?重新编译.没错,在恢复数据库之后我必须重新编译我的应用程序.即使我没有做任何改变.即使我在恢复数据库之前编译了应用程序.而且无论在上一次迁移的开发过程中,我都使用了那个确切的数据库来添加另一层.

我查了一下,我每次都可以重现这个.还原数据库,不要重新编译:不执行迁移.还原数据库并重新编译:执行迁移.

请注意,我没有代码改变什么 - 所以永远...

所以现在我的问题是:为什么?我很困惑.

编辑2

一段时间后回到这里.我还有这个问题.如果我添加一个新的迁移,然后运行我的应用程序,它会很好地迁移.

但是,如果我在迁移之前将数据库还原到运行我的应用程序,则它不会迁移.我必须重新编译我的应用程序.更糟糕的是,如果我必须在生产中恢复我的数据库,那么我将不得不重新发布我的整个应用程序.

如果我DROP我的整个数据库,我也必须重新编译.

在回答问题时

这是一次自动迁移.我有AutomaticMigrationsEnabled = false

DatabaseInitializer:

    Database.SetInitializer(
            new MigrateDatabaseToLatestVersion<ApplicationDbContext, 
                    MyNameSpace.Configuration>());
Run Code Online (Sandbox Code Playgroud)

编辑4 我发现我需要重新启动ApplicationPool.这是场景:

  1. 构建应用程序
  2. 恢复数据库
  3. 迁移未应用.应用程序因缺少表而崩溃

这是解决方法:

  1. 构建应用程序
  2. 恢复数据库
  3. 重启ApplicationPool
  4. 迁移已应用

似乎有些内容存储在内存中,说"是的,我们已经完成了所有的迁移.Nosirree,这里没什么可做的."

这可能是性能优化,但它真的很不方便,因为我无法在我们的生产环境中重置AppPool.如果有人知道如何关闭这种行为,我很乐意听到.

sql-server entity-framework

8
推荐指数
1
解决办法
262
查看次数

Source Tree和visualstudio.com个人访问令牌:如何使用令牌?

我刚刚在visualstudio.com上创建了一个个人访问令牌,因为在SourceTree中我无法使用我的visualstudio.com电子邮件和密码登录.既然我有令牌,我该如何使用它?我在网上找不到有关如何在SourceTree中使用它的任何信息.如果我选择Clone/New,并输入git repo的URL,我会被问到用户名和密码,而不是令牌......有人可以帮忙吗?

visual-studio atlassian-sourcetree

5
推荐指数
1
解决办法
3279
查看次数

如何构造具有有效父级的 QModelIndex?

我正在尝试对我的 QAbstractTableModel 实现进行单元测试。我已经实现了 rowCount()、columnCount() 和 data() 方法。

实例化我的模型后,无论嵌套多少次,父索引始终无效:

parent = model->index(0, 0);
i = model->index(0, 0, parent); // i.parent().IsValid() == false!
Run Code Online (Sandbox Code Playgroud)

现在,我是有效的。但 i.parent() 不是。即使我进一步嵌套:

ancestor = model->index(0, 0);
parent = model->index(0, 0, ancestor);
i = model->index(0, 0, parent); // i.parent().IsValid() == false!
Run Code Online (Sandbox Code Playgroud)

即便如此, i 是有效的,但 i.parent() 不是。

我已经对 rowCount 和 columnCount 方法进行了单元测试,并且我已经断言该模型是一个树模型,它有一行嵌套两行。此外,列数不为零。

为什么我的父索引总是无效?

qt

2
推荐指数
1
解决办法
2218
查看次数