2016-11-16 73 views
0

我有一个现有的数据库。它具有手动创建的表(在SQL中,而不是在EF中)。出于某些原因,我必须添加EF Code First Migrations。实体框架将删除它没有创建的表吗?

当更新数据库在尚未应用迁移的环境上运行时,我希望EF创建表,但我不希望它删除整个数据库。那是它会做什么的,如果是这样,我该如何阻止它?

在我的数据库上下文我不知道是否使用

//Disable initializer 
Database.SetInitializer<ApplicationDbContext>(null); 

或使用

Database.SetInitializer<ApplicationDbContext>(new CreateDatabaseIfNotExists<ApplicationDbContext>()); 

根据它看起来像CreateDatabaseIfNotExists实际上犹若EF删除数据库文件表格不存在。

但是,如果我只是禁用初始化程序,那么我认为这意味着它甚至不会创建EF表。这些解决方案看起来都不错。

回答

2

如果你在你的数据库的一些表,即手动创建的,你能使用以下命令迁移:

PM>Enable-Migrations 
PM>AddMigration [A_Name_For_Your_Migration] -IgnoreChanges 
PM>Update-Databases 
+0

我没有指定数据库初始化策略,然后确实如你所说,和它的工作。谢谢。 – levininja