实体框架打开时底层提供程序失败

3

我正在使用Entity Framework来开发我的Web应用。之前一切都正常。但是当我从SQL Server中删除了数据库后,每次运行应用程序时都会出现以下异常:

The underlying provider failed on open entity framework  

如果我们从 Sql Server 中删除数据库,再运行应用程序,那么数据库会重新创建,这是不是真的?

3个回答

3

您能展示一些关于连接字符串的细节吗?我想要检查您正在使用的身份验证。

设置典型身份验证的演示:http://msdn.microsoft.com/en-us/library/ff649314.aspx

另一个可能性是使用连接池。如果有任何打开的连接,请尝试显式关闭连接。

db.Database.Connection.Close();

3

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

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

您所遇到的错误通常与权限或连接问题有关。我建议您围绕运行您的应用程序的用户(或在连接字符串中)是否都可以访问和创建数据库进行故障排除。请尝试使用这些凭据手动执行此操作。 - undefined
是的,确认您可以登录(从运行应用程序的计算机上,对我来说使用SSMS),创建数据库并运行创建表脚本,最好也确认您已删除/移动了 SQL 服务器上的 .mdf 和 .ldf 文件以避免名称冲突。 - undefined
还要确保您没有为EF应用其他行为,以下是默认值:System.Data.Entity.Database.SetInitializer(new CreateDatabaseIfNotExists<SampleContext>()); 参见 https://dev59.com/f2025IYBdhLWcg3wOzXY#6131926 - undefined
是的,我能够从SQL服务器中添加数据库并创建表。 - Nitish

0
我曾经遇到过类似的错误,原因是连接问题。 通常情况下,您需要在实体(EDML)下打开您的*.EDPS文件,并检查您的连接字符串,确保它具有正确的设置,特别是您的默认Oracle home。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接