如何阻止EF创建数据库




我正在尝试上传我的Asp.net Mvc网站。我使用了代码优先的方法。现在我在服务器上创建了一个数据库,并将我的文件上传到Cpanel。但是当我打开网站时,我得到了这个错误:

数据库"master"中的CREATE DATABASE权限被拒绝。

我知道这是EF的原因,但我不知道如何解决。
我试图关闭数据库初始化,但没有帮助。然后我尝试通过以下方式禁用迁移:

public Configuration()
    {
        AutomaticMigrationsEnabled = false;
        ContextKey = "blah";
    }

但这也于事无补。有人能帮我吗?

您可以将初始值设定项设置为null,如下所示:

public TestDBContext(): base("TestDBConnectionString") 
            {
                Database.SetInitializer<TestDbContext>(null);
            }
            public DbSet<TestEntity> TestEntities { get; set; }

CreateDatabaseIfNotExists:这是默认的初始值设定项。顾名思义,如果根据配置不存在数据库,它将创建该数据库。但是,如果您更改模型类,然后使用该初始值设定项运行应用程序,那么它将引发异常。

  public SchoolDBContext(): base("SchoolDBConnectionString") 
            {
                Database.SetInitializer<SchoolDBContext>(new CreateDatabaseIfNotExists<SchoolDBContext>());
                //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseIfModelChanges<SchoolDBContext>());
                //Database.SetInitializer<SchoolDBContext>(new DropCreateDatabaseAlways<SchoolDBContext>());
                //Database.SetInitializer<SchoolDBContext>(new SchoolDBInitializer());
            }
            public DbSet<Student> Students { get; set; }
            public DbSet<Standard> Standards { get; set; }

来源:http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

相关内容

最新更新