sql - 如何在每次 Entity Framework 数据库迁移后访问上下文

标签 sql entity-framework-6

当我添加迁移时,我使用 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/

相关文章:

mysql - SQL 查询存在于每个集合中

sql - 从表中的几个系列中的每一个中获取最后一行

asp.net-mvc - ASP.NET MVC : Custom Sorting

c# - Entity Framework 6 mysql rowversion

entity-framework-6 - Automapper 导致错误 : missing type map configuration or unsupported mapping

javascript - 检查应用程序是否已经运行或重新启动

sql - 在 if 语句中添加 delete 语句

sql - 如何按日期时间进行数据透视表或交叉表?

c# - "where xxx is not null and xxx/2 < 4": "is not null" seems to be executed after my operation

c# - Entity Framework : Function Import - Code Generated In Designer But Not Recognized By Compiler