我刚刚使用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)?是什么让它在这种情况下失败?
答案 0 :(得分:3)
的名称应该是AgenciesDatabaseContext,而不仅仅是AgenciesDatabase。