无法在EF6中创建上下文

时间:2015-08-11 01:46:23

标签: c# entity-framework dbcontext

我曾多次使用EF,但我似乎无法弄清楚为什么会这样。

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

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。我能够做一个添加迁移就好了。我不知道,我很难过。

我已经引用了其他应用程序,我已经使用过这个,但我找不到为什么会发生这种情况的任何差异。我知道它会显得很明显。

1 个答案:

答案 0 :(得分:0)

在这种情况下,{strong>始终是做binary search debugging的好习惯。也就是说,继续删除东西直到它工作。缩小错误。直到最低限度。

您可以尝试:

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

鉴于您提供的信息,我们无法帮助您。