实体框架会删除它没有创建的表吗?

本文关键字:创建 框架 删除 实体 | 更新日期: 2023-09-27 18:18:12

我有一个现有的数据库。它有手动创建的表(用SQL,而不是用EF)。由于一些原因,我不得不添加EF Code First Migrations。

当Update-Database运行在一个尚未应用迁移的环境中时,我希望EF创建表,但我不希望它删除整个数据库。它会这样做吗?如果是这样,我怎么能阻止它?

在我的数据库上下文中,我不确定是否使用

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

或使用

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

根据文档,如果EF表不存在,看起来CreateDatabaseIfNotExists实际上仍然会删除数据库。

但是如果我只是禁用初始化器,那么我认为这意味着它甚至不会创建EF表。

实体框架会删除它没有创建的表吗?

如果您的数据库中有一些手动创建的表,您可以使用以下命令启用迁移:

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