2

我只是在使用 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)???是什么让它在这种情况下失败?

4

1 回答 1

3

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

于 2013-01-30T13:48:52.200 回答