实体框架代码在数据库迁移后首先回滚
Posted
技术标签:
【中文标题】实体框架代码在数据库迁移后首先回滚【英文标题】:Entity framework code first rolling back after database migration 【发布时间】:2014-02-11 15:11:18 【问题描述】:我有一个在任何地方都找不到答案的特定场景。
我想使用首先由 VistaDB 支持的实体框架代码。
存储的数据是用户特定的设置等,因此会有许多数据库副本,但它们永远不会在用户之间共享。但它们存储在本地存储中,与应用程序版本无关。
我可以很好地设置初始模型,并且前向迁移也很好(尽管我还不完全了解如何在运行时在每个用户桌面上执行此操作)。
我们通常会将应用程序发布给少数用户,但如果出现问题,则会回滚到以前的版本。
如果用户使用更新的模型运行 2.0 版应用程序,并且他们自动迁移他们的设置数据库,那么到目前为止一切顺利。
但现在我们将它们回滚到 1.0 版。我的理解是随着模型的前滚,1.0 代码不能再访问数据库。那么解决办法是什么?
我可以在每次更新模型时创建一个新的设置数据库,但是数据如何从旧的迁移过来呢?这也意味着在回滚时会丢失在新版本中所做的设置更改,反之亦然。
我真正想要的是让以前的版本(假设架构兼容)忽略模型更改,就像在 XML 中一样。即,如果您添加新列(或 XML 元素),旧代码会忽略它,因为它看不到它。但它仍然有效。对于这个用例,也许我只需要原始数据库访问而不是 EF?
【问题讨论】:
【参考方案1】:我不确定这对于 VistaDB 是否同样适用,但使用 EF 对数据库进行角色化 看到这个堆栈溢出问题EF Migrations: Rollback last applied migration?
或者如果链接断开 Update-Database -TargetMigration:"您要回滚到的迁移的名称"
【讨论】:
以上是关于实体框架代码在数据库迁移后首先回滚的主要内容,如果未能解决你的问题,请参考以下文章