entity-framework - 扩展数据库初始化器

标签 entity-framework ef-code-first migration

Entity Framework 具有三个我知道的初始化程序 - CreateDatabaseIfNotExistsDropCreateDatabaseWhenModelChangesDropCreateDatabaseAlways。当模型发生变化时,它们要么丢弃所有数据,要么死掉。

我想要一个初始化器来扩展现有数据库以匹配模型。如果缺少一个表,请创建它,如果某些列已更改,请重命名它们并制作新副本等。当然,有很多需要考虑的因素,特别是在涉及引用时,但我敢肯定有些事情比可以删除数据。

这样的初始化器是否存在?如果没有,我怎么写?

澄清一下,我想读取 EF 检测到的更改,例如,如果列从 int 更改为 double,我想在进行更改时保存我的数据。无需考虑引用列之间的复杂交互。

最佳答案

您可以找到几个类似于您想做的数据库初始化程序 in this thread

重要的信息来源当然是the sources of EF :

测试项目中有很多自定义的数据库初始化器。另外还有一个好处:文件 $\test\EntityFramework\FunctionalTests.Transitional\Migrations\TestHelpers\InfoContext.cs 中用于 SQL 元数据的 DbContext:您可以使用 linq 查询 sql 元数据。

关于entity-framework - 扩展数据库初始化器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21848722/

相关文章:

mysql按天分区

ruby-on-rails - rails : One-to-many association fails due to foreign key validation

type-conversion - 使用 Sequelize 更改列类型时定义转换

entity-framework - Entity Framework 4 和代码优先 CTP 5 - 缺少 key

c# - 使用 HasColumnAnnotation 可能有多个索引?

java - 将架构名称添加到 Spring 数据中的实体?

asp.net-mvc - LINQ to Entities 中是否可以进行递归查询

c# - 使用 TPH 在 Entity Framework 中找出具有主键的类型

c# - Linq to SQL 中的多值比较

entity-framework - EF Code First - 如何设置身份增量