【问题标题】:How to access context after each Entity Framework db migration每次实体框架数据库迁移后如何访问上下文
【发布时间】:2014-06-03 18:58:26
【问题描述】:

当我添加迁移时,我会使用 Up / Down 方法获得适当的 DbMigration 类,我可以在其中进行架构更改并且(使用 Sql() 方法)也可以进行数据/内容更改.

我希望能够使用数据库上下文在每次迁移时更改内容。我知道我可以在 Configuration 类中使用 Seed 方法,但我的理解是我只能将一个 Configuration 与我的初始化程序连接起来。

我希望有一个 UpCompleted()/DownCompleted() 方法,可以在迁移完成后提供对数据库上下文的访问。这将允许以比使用 Sql() 方法更不容易出错的方式编写增量数据/上下文更改“脚本”。

我错过了什么吗?这可能吗?

谢谢!

【问题讨论】:

    标签: sql entity-framework-6


    【解决方案1】:

    这实际上不起作用,因为上下文只有您最近的模型 - 只有在最近的迁移运行后才能使用它来访问数据库(这实际上是 Seed 实现的)。

    举一个这个想法如何打破的例子,如果你将一个属性从一个类移动到另一个类,那么来自旧迁移的种子逻辑将不再编译。但是您无法更改它以使用新属性,因为数据库中尚不存在相应的列。

    如果要编写这种种子/数据操作逻辑,则需要将其放在 Up/Down 方法的末尾,并使用 Sql 方法使用原始 SQL 执行。

    ~罗文

    【讨论】:

    • 谢谢 Rowan,这个解释很有帮助。我想提供一个前后上下文来促进数据迁移会变得混乱。开发人员需要定义和维护其上下文的多个版本,而 EF 需要知道如何处理从一个上下文到另一个上下文的数据迁移。
    猜你喜欢
    • 2014-07-08
    • 2012-10-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-24
    • 1970-01-01
    • 2013-09-16
    • 2017-04-25
    • 1970-01-01
    相关资源
    最近更新 更多