Sta*_*ove 80 migration entity-framework code-first
我在EF5中有一个代码优先的实体模型.但我想手动管理数据库更改 - 我不希望EF修改我现有的数据库及其所有数据.但是当我在EF映射和数据库中进行并行更改时,EF拒绝正常运行,告诉我需要先使用代码迁移.我怎么关掉这个?
Sar*_*uri 93
将Database.SetInitializer设置为null.
public class DatabaseContext: DbContext
{
//the base accepts the name of the connection string provided in the web.config as a parameter
public DatabaseContext()
: base("DatabaseContext")
{
//disable initializer
Database.SetInitializer<DatabaseContext>(null);
}
Run Code Online (Sandbox Code Playgroud)
kar*_*gen 39
所以我找到的最完整的答案是:
Migrations
项目中的文件夹.Database.SetInitializer<DatabaseContext>(null);
在DatabaseContext初始化程序中设置.__MigrationHistory
数据库中的表.对于EF6 +,该表位于下面,Tables
但对于早期版本,它位于下面System Tables
.Eri*_* J. 26
如果要完全关闭迁移:
但是,我发现最好保持代码首次迁移,但是使用该-Script
选项让EF为我创建一个DB更改脚本,我可以手动应用于每个数据库(开发,QA,生产):
Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject
Run Code Online (Sandbox Code Playgroud)
这样EF就会为我创建更改脚本,而且我仍然可以完全控制所应用的更改.我像其他源代码一样对更改脚本进行版本控制.
Epi*_*dex 23
如果您已经使用过迁移,那么仅更改初始化程序将无济于事.您需要转到Management Studio,打开数据库表,转到System Tables
文件夹并删除__MigrationHistory
位于那里的表(对于EF6及更高版本,它位于正下方Tables
).这将禁用迁移.
归档时间: |
|
查看次数: |
79885 次 |
最近记录: |