代码首次连接字符串问题

时间:2015-06-22 19:09:21

标签: c# sql-server asp.net-mvc connection-string code-first

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

我在本地构建数据库时播种了数据库,并将mdf文件复制到服务器上的App_Data文件中。如果可以避免,我宁愿不必重新种植,因为种子数据涉及几个api调用几个api以及其他一些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/的建议以及此处的推荐,但我只是收到了错误消息。我认为这不重要,但我使用SQL Server来访问数据库,而不是Express。有什么建议吗?

编辑:
我将发布一些我尝试过的部署connectionStrings,以防有:

    <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,重建了end republished。我注意到它在本地仍然完美运行,我仍然可以使用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)

我不确定这是好还是坏......

2 个答案:

答案 0 :(得分:1)

localdb不适合部署。

将您的连接字符串更改为真正的sql server / express字符串

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

答案 1 :(得分:0)

EF支持一些初始化程序选项。其中之一是创建一个数据库。您可能应该使用该选项,但不能使用LocalDb。正如@Pinch所说,这不适合生产。您需要做的另一件事是检查您的提供程序安装SQL Server的位置,并将其用作连接字符串中的数据源。看看有关初始化器http://www.entityframeworktutorial.net/code-first/database-initialization-strategy-in-code-first.aspx

的EntityFramework教程的这篇文章