实体框架数据库问题 - 建立与 SQL Server 的连接时发生网络相关或特定于实例的错误

Cla*_*ith 3 sql-server asp.net-mvc entity-framework appharbor

A network-related or instance-specific error occurred while establishing a connection to SQL Server
Run Code Online (Sandbox Code Playgroud)

主页加载正常,但当我尝试转到帐户/注册或帐户/登录时出现错误。

文件 Filters/InitializeSimpleMembershipAttribute.cs 中的 SimpleMembershipInitializer 构造函数中的这一行发生错误

if (!context.Database.Exists())
Run Code Online (Sandbox Code Playgroud)

现在,如果我将 web.config 设置为

<entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework" />
</entityFramework>
Run Code Online (Sandbox Code Playgroud)

它仅在本地工作,但我假设它使用本地数据库。现在我的 web.config 中的实体框架看起来像

<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
Run Code Online (Sandbox Code Playgroud)

我有另一个应用程序,我使用相同的托管服务和免费数据库(appharbor 和 SQL Server Yocto),它工作得很好。我最近设置了一个新的应用程序和数据库,但它不起作用。我可以在 SQL Server 中很好地连接到数据库,并在 Visual Studio 2012 中扩展 DataConnections -> MyContextName,所以我知道连接字符串不是问题。

我想知道托管数据库的服务器是否存在问题,而我无权访问该服务器。

我对如何解决这个问题完全没有想法。谢谢。

run*_*sen 5

问题可能是连接字符串名称尚未正确配置和/或不遵循实体框架约定(实体框架版本之间略有不同)。如果您可以从自己的计算机或 SQL Server 管理页面连接到数据库,则问题不太可能与数据库/数据库服务器本身有关。

看看另一个用户遇到类似问题的讨论。您可能只需要为实体框架数据库上下文设置正确的连接字符串名称。还要确保您已设置迁移来创建数据库。

这可以解释为什么它在本地与本地数据库连接工厂一起工作。我怀疑您的本地 SQL 服务器中创建了一个数据库,并且它可以不受限制地创建数据库。在 AppHarbor 上,您需要使用提供的数据库和连接字符串,因为您无法自己创建数据库。您可以通过连接到本地数据库服务器并列出可用数据库来确认是否属于这种情况。

我还可以推荐使用此示例应用程序以及有关在 AppHarbor 上运行迁移和配置实体框架 (4.3) 的相关博客文章。