不能在EF6中创建上下文

本文关键字:创建 上下文 EF6 不能 | 更新日期: 2023-09-27 18:07:10

我已经使用EF很多次了,但我似乎不明白为什么会发生这种情况。

我有两个项目的解决方案,一个是我在其他几个应用程序中使用的通用库,其中包含我所有的实体,一个是我的更新控制台应用程序。在公共库中,我有我的上下文,看起来像这样。

public class DalContext : DbContext
{
    public DalContext() : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString)
    {
        Database.SetInitializer(new CreateDatabaseIfNotExists<DalContext>());
    }
    public DbSet<UserAccount> UserAccounts { get; set; }
    public DbSet<GameImport> GameImports { get; set; }
    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
    }
}

然后在控制台应用程序中创建上下文实例,得到错误

"对象引用未设置为对象的实例".

我正在使用一个基本的using语句来创建我的上下文,因此所有内容都被正确地处理。

using (var db = new DalContext())
{
    ....
}

当using语句创建DalContext对象时,我得到错误。

两个应用程序都使用同一个版本的EF 6.1.3。我能够很好地进行添加迁移。我不知道,我被难住了。

我已经引用了其他应用程序,我已经使用了这个,我找不到任何差异,为什么会发生这种情况。

不能在EF6中创建上下文

在这种情况下,进行二进制搜索调试总是是一个好做法。也就是说,不断地移除东西,直到它起作用。缩小误差范围。直到最低限度。

你可以试试:

  • 用实际连接字符串ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString替换。这是最有可能的一个。"DefaultConnection"可能不在你的web.config/app中。配置文件,这将解释为什么相同的代码工作在其他主机项目。
  • 删除/替换此:Database.SetInitializer(new CreateDatabaseIfNotExists<DalContext>());
  • 删除/替换此:modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); .

鉴于你方所提供的信息,我方无法再提供帮助。