Entity Framework 具有三个我知道的初始化程序 - CreateDatabaseIfNotExists
、DropCreateDatabaseWhenModelChanges
和 DropCreateDatabaseAlways
。当模型发生变化时,它们要么丢弃所有数据,要么死掉。
我想要一个初始化器来扩展现有数据库以匹配模型。如果缺少一个表,请创建它,如果某些列已更改,请重命名它们并制作新副本等。当然,有很多需要考虑的因素,特别是在涉及引用时,但我敢肯定有些事情比可以删除数据。
这样的初始化器是否存在?如果没有,我怎么写?
澄清一下,我想读取 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/