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

时间:2013-01-30 10:24:13

标签: entity-framework entity-framework-5

我刚刚使用EF 5.0,我重新创建了一个非常简单的DbContext,它与EF 4.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; }
}

我将此上下文的global.asax初始化程序设置为null,因为该表已存在

Database.SetInitializer<ExtranetCentralizerContext>(null);

这是web.config中的连接字符串:

<add name="AgenciesDatabase" providerName="System.Data.SqlClient" connectionString="..."/>

当我尝试在存储库中使用DbContext时,我收到此错误:

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")
     {

     }
 }

一切都很好。所以我的问题是:是不是EF使用匹配它的名称的连接字符串(在这种情况下AgenciesDatabase)?是什么让它在这种情况下失败?

1 个答案:

答案 0 :(得分:3)

在app.config中

的名称应该是AgenciesDatabaseContext,而不仅仅是AgenciesDatabase。