1

我正在构建一个 MVC 3 应用程序并首先使用 Entity Framework 4.3 代码。我的环境变得越来越复杂,所以我决定使用 SQL Server 2008 R2。然后我更改了我的连接字符串web.config。我检查并知道新的连接字符串是正确的,但 EF 仍在使用.\SQLEXPRESS ...来自 SQL Server CE 的默认连接字符串 ( )(我现在已经从 nuget 包中删除了 SQL Server CE)。

我的上下文名称是CodeFirstContext,我的连接字符串名称CodeFirstContext也是。但是return context.Products;总是失败和/因为context说中的连接字符串SQLEXPRESS(我web.config将连接字符串设置为SQLSERVER)。

这里发生了什么?我删除了项目中的所有默认连接字符串。当我运行该项目时,它仍然从 SQL Server Express 获取所有数据。

我一直在寻找大约两天。如果这么多人只需要更改连接字符串然后它就可以工作,为什么这会如此困难。

4

4 回答 4

1

您可能正在从您的根/机器配置中获取连接字符串,在您的 web.config 文件中添加一个清晰的元素,如下所示

<connectionStrings>
  <clear/>
  .. your connection strings here
...
于 2012-05-04T13:20:07.130 回答
1

我已经解决了这样的问题:

public class CodeFirstContext : DbContext
{
    public CodeFirstContext() : base("RandevuIzle")
    {
    }
    public DbSet<User> Users { get; set; }
}


<connectionStrings>
  <add name="RandevuIzle" connectionString="Data Source=111.222.333.444\MSSQLSERVER2008; Initial Catalog=RandevuIzle;User Id=MyUserName;Password=myPassword" providerName="System.Data.SqlClient" />

出了点问题,但我无法理解。在执行以下代码后,我重新启动了项目。然后就可以正常工作了。

于 2012-05-05T09:38:13.023 回答
0

当您实例化您的 DbContext 时,您是否提供了一个不是 CodeFirstContext 的名称?

于 2012-05-04T14:27:27.730 回答
0

神圣的 SQL 烟雾,蝙蝠侠!这让我今天彻底崩溃了。在一个新项目上使用 VS2010 启动和运行 EF 5.0 比我想象的要困难得多。我遇到了同样的问题,发现了这首很棒的代码颂::

http://odetocode.com/blogs/scott/archive/2012/08/15/a-troubleshooting-guide-for-entity-framework-connections-amp-migrations.aspx

具体来说::

 public class DepartmentDb : DbContext 
 {
    public DepartmentDb()
        : base(@"data source=.; 
                 initial catalog=departments;
                 integrated security=true")
    { }

    public DbSet<Person> People { get; set; }
}

得到了我需要的结果。我认为我必须像这样设置数据源并且它不会在 app.config 中找到明显的解决方案,这很酷吗?不,我没有。但是我今天正式花费了太多时间来尝试从 LINQ 到 SQL 再到 EF 的转换,并且我将继续完成一些应用程序,同时我仍然有兴趣这样做。

于 2013-02-24T22:04:20.310 回答