【问题标题】:Entity Framework is trying to create a database, but its not what I want实体框架正在尝试创建一个数据库,但这不是我想要的
【发布时间】:2012-03-07 09:25:08
【问题描述】:

我有一个小的 asp.net mvc4 应用程序(在我的本地机器上运行良好),它使用实体框架 v4.1.0.0 和 ADO.net DbContext Generator。(SQL Server 2008 r2)

我正在通过 Visual Studio 2010 中的“添加可部署依赖项...”上下文菜单添加所需的较新版本的 dll。

我有一个与 godaddy.com 共享的主机,我已经将文件上传到服务器并创建了数据库,现在问题来了。当我尝试浏览我的网站时,我收到以下错误:

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

我查了一下,发现这个错误是由 EF 代码首先尝试创建数据库引起的。但我不希望 EF 代码先重新创建数据库,我如何关闭这个自动创建数据库完全?我无意使用代码优先功能。

请帮忙。

【问题讨论】:

    标签: entity-framework-4 ef-code-first


    【解决方案1】:

    将此代码放入 Global.asax 的 Application_Start() 方法或 DbContext 类的构造函数中

    Database.SetInitializer<MyContext>(null);
    

    如果要在 POCO 域更改时重新创建数据库,请使用以下代码而不是上面的代码

    Database.SetInitializer<MyContext>(new DropCreateDatabaseIfModelChanges<MyContext>());
    

    【讨论】:

    • 我尝试将Database.SetInitializer&lt;MyContext&gt;(null); 放在 global.asax 和构造函数中,它不起作用,我错过了什么吗?
    • 检查您的网络应用程序中的连接字符串。我怀疑 EF 尝试创建的数据库与您已经创建的数据库不同。
    • 我在问题中没有提到的是我也在关注this Hanselman post 关于通用提供者,正如我在仔细检查堆栈跟踪后发现的那样,它还试图为 aspnet 成员创建一个数据库和配置文件。所以我现在在 web.config 中恢复到旧的 aspnet 成员资格和提供程序设置,现在它可以工作了,谢谢@Ray 的努力
    • 成功了。我不得不写 Database.SetInitializer(null);对于每个模型。
    • 6 年后,这适用于我在托管服务器上的 MVC 4 Entity Framework 6 项目。传奇!
    【解决方案2】:

    如果您使用的是 EF 迁移,这是您为其设置的:

    public sealed class DbConfiguration : DbMigrationsConfiguration<DatabaseContext>
    {
        public DbConfiguration()
        {
            AutomaticMigrationsEnabled = false;
        }
    }
    

    但这并不能回答关于 EF Code First 本身的问题。如果数据库已经存在,那么 EF 将不会尝试创建它。所以你只需要将它指向一个现有的数据库。并确保连接字符串名称与数据库上下文的名称相同。如果不是,您需要为其提供一些覆盖:

    public class DatabaseContext : DbContext
    {
        public DatabaseContext() 
          : base(ApplicationParameters.ConnectionStringName)
        {
        }
    
        public DatabaseContext(string connectionStringName)
          : base(connectionStringName)
        {
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-24
      • 2011-09-28
      • 2016-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多