代码优先连接字符串问题

本文关键字:字符串 问题 连接 代码 | 更新日期: 2023-09-27 17:57:31

我正在构建一个C#MVC代码优先的网站,并使用FTP将其部署到主机(aspnix.com)。初始启动页面加载,但如果我试图加载任何需要访问数据库的页面,我只会收到一个错误:"错误。处理您的请求时出错。"

我在本地构建数据库时为其播种,并将mdf文件复制到服务器上的App_Data文件中。如果可以避免的话,我宁愿不必重新设置种子,因为种子数据涉及对几个api的几个ajax调用以及其他一些web抓取。

这是我在本地使用的connectionString:

    <add name="(contextClass)Context" connectionString="Data Source=(LocalDb)'v11.0;Initial Catalog=|DataDirectory|'(projectName).Context.(contextClass).mdf;Integrated Security=SSPI;Database=(projectName).Context.(contextClass);AttachDBFilename=|DataDirectory|'(projectName).Context.(contextClass).mdf" providerName="System.Data.SqlClient" />

我尝试了几种方法来改变这一点,包括使用http://www.connectionstrings.com/sql-server/以及SO上的这里,但我刚刚收到错误消息。我认为这无关紧要,但我使用SQL Server来访问数据库,而不是Express。有什么建议吗?

编辑:
我将发布我尝试过的几个部署连接字符串,以防有帮助:

    <add name="(contextClass)Context" connectionString="Data Source=.'SQLExpress;Initial Catalog=|DataDirectory|'(projectName).Context.(contextClass)Context.mdf;Integrated Security=SSPI;Database=(projectName).Context.(contextClass)Context;AttachDBFilename=|DataDirectory|'(projectName).Context.(contextClass)Context.mdf" providerName="System.Data.SqlClient" />

另一个不起作用的例子:

    <add name="(contextClass)Context" connectionString="Data Source=.'SQLExpress;Database=(projectName).Context.(contextClass)Context;AttachDBFilename=|DataDirectory|'(projectName).Context.(contextClass)Context.mdf;Trusted_Connection=Yes" providerName="System.Data.SqlClient" />

编辑:我注意到在服务器上的web.config文件上生成了以下附加连接字符串。

    <add name="(projectName).Context.(contextClass)Context" connectionString="(projectName).Context.(contextClass)Context_ConnectionString" 
     providerName="System.Data.SqlClient"/>

这会引起什么问题吗?

更新:我觉得奇怪的是,这些名称太长了(例如(projectName).Context.(contextClass)Context),所以我把它们改成了只有(contextClass.Context,重建并重新发布。我注意到它在本地仍然运行良好,并且我仍然能够使用SQL Server访问localDB。

在服务器上,我仍然收到一个错误,但它已经改变了。我现在得到:

    Exception: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)

我不确定这是好是坏。。。

代码优先连接字符串问题

localdb不适用于部署。

将连接字符串更改为真正的sqlserver/express字符串

codefirst应该自动构建数据库,但要确保您有足够的权限。

EF支持一些初始值设定项选项。其中之一就是创建一个数据库。您可能应该使用该选项,但不应该使用LocalDb。正如@Pinch所说,这不是为了生产。您需要做的另一件事是与您的提供商核实SQL Server的安装位置,并将其用作连接字符串中的数据源。看看这篇关于初始化器的EntityFramework教程的文章http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx