Entity framework 必须首先将连接字符串传递给EF 5 DbContext代码,否则命令异常

Entity framework 必须首先将连接字符串传递给EF 5 DbContext代码,否则命令异常,entity-framework,entity-framework-5,Entity Framework,Entity Framework 5,我只是在使用EF5.0,并且我已经重新创建了一个非常简单的DbContext,它与EF4.1一样工作 这里是上下文和模型 public class AgenciesDatabaseContext : DbContext { public DbSet<Agency> Agencies { get; set; } } [Table("QryAgency")] public class Agency { [Key] public string CardCode { g

我只是在使用EF5.0,并且我已经重新创建了一个非常简单的DbContext,它与EF4.1一样工作

这里是上下文和模型

public class AgenciesDatabaseContext : DbContext 
{
   public DbSet<Agency> Agencies { get; set; }
}

[Table("QryAgency")]
public class Agency
{
   [Key]
   public string CardCode { get; set; }
   public string DisplayName { get; set; }
   public string CardFName { get; set; }
   public string Address { get; set; }
   public string ZipCode { get; set; }
   public string City { get; set; }
}
这很奇怪,因为我可以看到没有连接到我的数据库

我不明白的是,如果我像这样将连接字符串传递到上下文,我就可以使它工作:

 public class AgenciesDatabaseContext : DbContext 
 {
     public DbSet<Agency> Agencies { get; set; }

     public AgenciesDatabaseContext ()
            : base("AgenciesDatabase")
     {

     }
 }
公共类代理DatabaseContext:DbContext
{
公共数据库集代理{get;set;}
公共代理数据库上下文()
:base(“代理数据库”)
{
}
}

那里一切都很好。所以我的问题是:EF不应该使用与其名称匹配的连接字符串(在本例中是AgenciesDatabase)吗???在这种情况下,是什么导致它失败的?

在app.config中,名称应该是AgenciesDatabaseContext,而不仅仅是AgenciesDatabase。

我很困惑,你先说代码。然后,上下文的构造函数可以有任何您喜欢的值。我希望在构造函数中包含一些代码。硬编码或注入的连接字符串。此处我的上下文的构造函数仅用于传递连接字符串的名称。这使它可以工作,但据我所知,我不需要传递它,因为我的上下文类与我的连接字符串具有相同的名称。你明白了吗?@Arno2501将你的整个内部异常和连接字符串不加修改地放进去。你说得对,谢谢!我是如此的盲目,但这绝对是真的,非常感谢!但我还是不明白为什么我如此确信你只需要像你的上下文一样命名它,而没有“上下文”部分pfff。@Arno2501我曾经犯过同样的错误:)。DbContext的继承支持自动搜索名为从DbContext:)派生的类的连接字符串。
<add name="AgenciesDatabase" providerName="System.Data.SqlClient" connectionString="..."/>
InnerException = {"Invalid column name '...'.\r\n Invalid column name '...'.\r\nInvalid column name '...'."}
 public class AgenciesDatabaseContext : DbContext 
 {
     public DbSet<Agency> Agencies { get; set; }

     public AgenciesDatabaseContext ()
            : base("AgenciesDatabase")
     {

     }
 }