【问题标题】:The underlying provider failed on open entity framework底层提供者在开放实体框架上失败
【发布时间】:2012-08-03 10:16:26
【问题描述】:

我在我的 Web 应用程序中取消实体框架。早些时候一切正常。但后来我从 Sql Server 中删除了数据库。之后,每当我运行应用程序时,都会出现以下异常:

The underlying provider failed on open entity framework  

如果我们从 Sql Server 中删除数据库并再次运行应用程序,数据库是否会再次创建?

【问题讨论】:

    标签: asp.net sql-server entity-framework


    【解决方案1】:

    您能否展示一些有关连接字符串的详细信息。我基本上想检查您正在使用的身份验证。 设置典型身份验证的演示:http://msdn.microsoft.com/en-us/library/ff649314.aspx

    另一种可能性是连接池。尝试显式关闭连接(如果有任何打开的连接)

    db.Database.Connection.Close();
    

    【讨论】:

      【解决方案2】:

      实体框架将在应用程序启动时重新创建您的数据库,假设如下:

      • 您有权在 SQL 中创建数据库
      • 正确指定了连接字符串(如果它在此之前工作应该没问题)
      • 您正在对数据库使用 CodeFirst 或 ModelFirst 策略(即,如果您从现有数据库生成 EDMX,它不会为您重新创建它)

      【讨论】:

      • 您得到的错误通常与权限或基于连接的问题有关。我建议围绕运行您的应用程序(或在 conn 字符串中)的用户可以访问和创建数据库的天气进行故障排除。尝试使用这些凭据手动执行此操作。
      • 是的,检查您是否可以登录(从运行应用程序的机器上,SSMS 对我有效),创建一个数据库并运行一个创建表脚本,它可能还值得确认您已删除/移动了 . SQL 框上的 mdf 和 .ldf 文件,因此您不会遇到名称冲突。
      • 另外只需确保您没有为 EF 应用其他行为,以下是默认值:System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<SampleContext>()); 参见 stackoverflow.com/a/6131926/1070291
      • 是的,我可以添加数据库并从 SQL 服务器创建表。
      【解决方案3】:

      我遇到了类似的错误,这是由于连接问题。 通常您需要在您的实体 (EDML) 下打开您的 *.EDPS 文件并检查您的连接字符串并确保其设置正确,尤其是您的默认 Oracle 主目录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-05-12
        • 1970-01-01
        相关资源
        最近更新 更多