我目前正在使用实体框架4.3与CodeFirst方法使用简单的POCO类的ASP.NET MVC 4项目。另外,我使用SQL Server Express作为开发数据库。ASP.NET MVC 4 - 应用程序不接受新的连接字符串 - AppHarbor Deploy问题
在构建我的类并设置连接字符串之后,我运行了我的项目,它为我生成了一个SQL Server Express数据库,没有任何问题。
虽然这个问题,我正在尝试部署到AppHarbor,我遇到了连接字符串的问题。 AppHarbor要求您将SQL Server安装为'Add-On'并将连接字符串配置为具有别名,以便将Sequilizer连接字符串注入您从GitHub推送的项目中。
这里是他们对如何工作的文档:http://support.appharbor.com/kb/add-ons/using-sequelizer
我相信我有这一切设置正确,但似乎与我的应用程序是如何读取连接字符串的问题。
下面是我用我的本地机器上的发展连接字符串:
<connectionStrings>
<add name="DefaultConnection"
connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=aspnet-FranchiseManager-201275154247;Integrated Security=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
这里是AppHarbor Sequilizer连接字符串的样子:
<connectionStrings>
<add
name="DefaultConnection"
connectionString="Server=0691298f-d461-40cc-86d6-a089016ba88d.sqlserver.sequelizer.com;Database=<removed hash value>;User ID=<removed hash value>;Password=<removed hash value>;"
providerName="System.Data.SqlClient"
/>
</connectionStrings>
第一连接 - 本地生成通过我的EF - 作品很好。第二个 - 由Sequilizer创建 - 没有被我的应用程序读取。
但是 - 我可以通过SQL Server Management Studio连接到Sequilizer数据库。所以它一定是我的应用程序吧?
为了解决我部署到AppHarbor的问题,我将连接字符串硬编码到我的应用程序中,而不是由EF自动生成并在本地机器上测试的应用程序。
这里就是我所做的:
- 所提供的一个AppHarbor 更换连接字符串在Web.config中,
- 清洗液,
- 重建解决方案
但当我运行应用程序时,它仍在使用EF生成的原始数据库 - 这意味着它仍在读取旧的连接字符串。
看起来像改变连接字符串是不够的。为了替换连接字符串,应该更改我的应用程序中的其他内容吗?
任何建议表示赞赏 - 谢谢!
编辑
这里是我的DbContext类:
public class FranchiseManagerContext : DbContext
{
public DbSet<FranchiseSet> FranchiseSets { get; set; }
public DbSet<Franchise> Franchises { get; set; }
}
这个工作过程,是一个名为 “DefaultConnection” 的连接字符串。
如何EF知道到的DbContext在这种情况下连接字符串匹配,但是如果你改变了字符串的名称不能做呢?
UPDATE
我想我知道现在是什么从这个苏答案:What is the point of "Initial Catalog" in a SQL Server connection string?
它看起来像初始目录属性指定特定的数据库时,实体框架的第一个踢使用
该帐户是否具有数据库创建权限? – 2012-07-19 18:47:24
你得到的错误是什么? – 2012-07-19 18:48:09
检查连接字符串是否被上下文使用,并且它没有硬编码,如果它被部署,请检查服务器上的webconfig以确保它是正确的。 – 2012-07-19 18:52:57