我如何禁用代码第一次迁移

我在EF5中有一个代码优先的实体模型。 但我想手动管理数据库更改 - 我不希望EF修改我现有的数据库及其所有数据。 但是,当我在EF映射和数据库中进行并行更改时,EF拒绝正确操作告诉我需要使用代码第一次迁移。 我如何关闭此功能?


将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);
    }

如果你想完全关闭迁移:

https://stackoverflow.com/a/9709407/141172

不过,我发现最好先启用代码首次迁移,但使用-Script选项让EF为我创建一个DB更改脚本,以便我可以手动应用于每个数据库(开发,QA,生产):

Update-Database -Script -ProjectName MyProject -StartupProjectName MyProject

这样EF将为我创建更改脚本,并且我仍然完全控制所应用的更改。 我像其他任何源代码一样版本更改脚本。


如果您已经使用迁移,那么仅更改初始化程序将无济于事。 您需要转到Management Studio,打开您的数据库表,转到System Tables文件夹并删除位于那里的__MigrationHistory表(对于EF6及更高版本,它位于Tables下)。 这将会禁用Migrations。

链接地址: http://www.djcxy.com/p/90239.html

上一篇: How can I disable code first migrations

下一篇: how to generate table per hierarchy using entity framework 5 model first