当我添加迁移时,我使用 Up/Down 方法获得适当的 DbMigration 类,我可以在其中进行架构更改,并且(使用 Sql() 方法)也可以进行数据/内容更改.
我希望能够使用数据库上下文在每次迁移时进行内容更改。我知道我可以在 Configuration 类中使用 Seed 方法,但我的理解是我只能将一个 Configuration 与我的初始值设定项连接起来。
我希望有一个 UpCompleted()/DownCompleted() 方法,可以在迁移完成后提供对数据库上下文的访问。这将使编写增量数据/上下文更改“脚本”的方式比使用 Sql() 方法更不容易出错。
我错过了什么吗?这可能吗?
谢谢!
最佳答案
这实际上不起作用,因为上下文只有您最新的模型 - 只有在最近的迁移运行后才能用于访问数据库(这实际上是 Seed 实现的)。
举个例子来说明这个想法是如何被打破的,如果您将一个属性从一个类移动到另一个类,那么旧迁移中的种子逻辑将不再编译。但您无法将其更改为使用新属性,因为数据库中尚不存在相应的列。
如果你想编写这种种子/数据操作逻辑,你需要将其放在 Up/Down 方法的末尾,并使用 Sql 方法使用原始 SQL 来执行它。
~罗文
关于sql - 如何在每次 Entity Framework 数据库迁移后访问上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24022872/