我正在尝试使用ASP.NET MVC3 EF和CODEFIRST与SQL Server 2008后端发布网站。在我的本地机器上,我使用sql express db进行开发,但现在我正在推送,我想使用我的托管生产数据库。问题是,当我尝试运行应用程序时,它仍然使用我的本地数据库连接字符串。我已经完全删除了我的web.config文件中的旧连接字符串,并在创建新连接字符串之前使用了<clear />
标记。我也清理了解决方案并重建,但不知何故它仍然连接到旧的数据库。我错过了什么?
这是新的连接字符串:
<connectionStrings>
<clear />
<add name="CellularAutomataDBContext"
connectionString=" Server=XXX;
Database=CellularAutomata; User ID=XXX; Password=XXX; Trusted_Connection=False"
providerName="System.Data.SqlClient" />
</connectionStrings>
更新
当我调试并查看DBCONTEXT对象时,这就是为其连接显示的内容:
Data Source=.\\SQLEXPRESS;Initial Catalog=CellularAutomata.Models.D1K2N3CARuleDBContext;Integrated Security=True;MultipleActiveResultSets=True"
我不确定为什么会发生这种情况,因为我无法在任何地方找到它。此外,在配置下它说LazyLoadingEnabled = true,我认为这可能是问题的一部分,也许它没有加载新的连接字符串。我在哪里更改这些参数?
更新2
EFCodeFirst正在使用默认连接字符串,我无法弄清楚如何让它接受我在web.config文件中指定的连接字符串。
答案 0 :(得分:3)
因此,使用EF CodeFirst时,会使用默认连接字符串。如果您希望能够使用自定义连接字符串,则必须遵循一些参数准则。
name ="this must match the name of your database context class"
connectionString="Server=yourserverurl; Database=yourdatabasename; User ID=youruserid;
Password=yourpassword; Initial Catalog=the name of the database to use;
Trusted_Connection=False"
providerName="System.Data.SqlClient"
到目前为止,这对我有用。
答案 1 :(得分:0)
您显示的connectionString
不是EF连接字符串。 EF不会使用它。所以你改变了错误的东西。
EF connectionString
将包含providerName="System.Data.EntityClient"
答案 2 :(得分:0)
它会查找与您的上下文相同的名称,具体取决于您的其他内容 也正在使用其他名称。我通常使用以下内容进行控制 具有相同或特定连接字符串的特定功能 (例如,我将应用服务保存在不同的数据库中,因此EFCF可以根据需要删除表):
<connectionStrings>
<add name="MyAppContext" .../>
<add name="ApplicationServices" .../>
<add name="DefaultConnection" .../>
</connectionStrings>