ASP.NET MVC 4 – 应用程序不接受新连接字符串 – AppHarbor Dep
我目前正在开发一个ASP.NET MVC 4项目,该项目使用Entity Framework 4.3和CodeFirst方法,使用简单的POCO类.另外,我使用SQL Server Express作为开发数据库.
在构建我的类并设置连接字符串之后,我运行了我的项目,它为我生成了一个SQL Server Express数据库,没有任何问题. 但问题是,我正在尝试部署到AppHarbor,我遇到连接字符串问题. AppHarbor要求您将SQL Server安装为“附加组件”,并将连接字符串配置为具有将其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自动生成并在我的本地计算机上进行测试. 这是我做的: >将Web.config中的连接字符串替换为一个AppHarbor 但是当我运行应用程序时,它仍然使用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? 看起来初始目录属性指定了实体框架首次启动时要使用的特定数据库. 解决方法
您必须指定要加载DbContext的连接字符串的名称.它无法神奇地猜测您希望它使用名为DefaultConnection的那个.有一种启发式方法,如果没有指定名称,它将查找一个连接字符串,其名称设置为从DbContext继承的类的名称. IE浏览器.如果你有:
MyAwesomeDatebase : DbContext …然后实体框架将开箱即用: <add name="MyAwesomeDatebase" connectionString="blah" providerName="System.Data.SqlClient" /> ……但如果你有: <add name="DefaultConnection" connectionString="blah" providerName="System.Data.SqlClient" /> …然后它将无法工作,因为实体框架无法知道MyAwesomeDatebase与DefaultConnection一起使用. 要做到这一点,请执行以下操作: public class MyAwesomeDatebase : DbContext { public MyAwesomeDatebase() : base("DefaultConnection") } ……而你是金色的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc-4 – 在.cshtml文件中设置断点 – VS2013
- asp.net-mvc – 无法加载文件或程序集Oracle.DataAccess
- asp.net-mvc-3 – 为什么抛出NULL值异常?
- asp.net-mvc – 为什么我的ViewModel在[HttpPost]上为空?
- asp.net – SelectedValue对DropDownList的SelectedItem.Va
- asp.net-mvc-3 – ASP.NET MVC 3 MSChart错误:此数据系列只
- asp.net-mvc – MVC 4. IIS 7.5 PUT返回405
- asp.net-mvc – “GenerateResource”任务失败,意外地为空的
- asp.net core中使用EF Core自动生成表的Id主键
- asp.net – 带有服务器端资源字符串的Html输入标记
- ASP.NET MVP vs ASP.NET MVC
- asp.net-web-api – 刷新令牌 – 服务器端存储和
- asp.net – 自定义日期colmn telerik网格的过滤器
- asp.net-mvc – ASP.NET MVC Textarea HTML帮助器
- asp.net-mvc – Mono上的ASP.NET MVC
- ASP.net Web窗体,在编译时获取aspx /视图错误?
- asp.net-mvc – 从桌面开发人员的角度来学习ASP.
- asp.net-mvc – ServiceStack.Factor模块列表中有
- asp.net-mvc-3 – 在剃刀中使用@variable后有一个
- asp.net – 如何将数据保存在MVC控制器的内存中?