ASP.NET EFCodeFirst没有使用正确的连接字符串

时间:2011-02-25 15:02:40

标签: asp.net sql-server-2008 asp.net-mvc-3 code-first

我正在尝试使用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文件中指定的连接字符串。

3 个答案:

答案 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>