Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法在EF6中创建上下文_C#_Entity Framework_Dbcontext - Fatal编程技术网

C# 无法在EF6中创建上下文

C# 无法在EF6中创建上下文,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,我已经使用EF很多次了,但我似乎不明白为什么会发生这种情况 我有一个包含两个项目的解决方案,一个是我的公共库,用于其他几个拥有我所有实体的应用程序,另一个是我的更新程序控制台应用程序。在公共库中,我有我的上下文,看起来是这样的 public class DalContext : DbContext { public DalContext() : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].Connect

我已经使用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语句创建
DalContext
对象时,我得到了一个错误

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


我引用了其他应用程序,在这些应用程序中我使用了这个,但我找不到任何差异来解释为什么会发生这种情况。我知道这将是一件显而易见的事情。

在这种情况下,做一件事总是一种很好的做法。也就是说,继续移除东西直到它起作用。缩小误差。直到最低限度

您可以尝试:

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

鉴于您提供的信息,我们不可能进一步帮助您。

在这种情况下,做一件事总是一个很好的做法。也就是说,继续移除东西直到它起作用。缩小误差。直到最低限度

您可以尝试:

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

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

您是否检查了
ConfigurationManager.ConnectionString[“DefaultConnection”]
是否为空?您是否也可以发布堆栈跟踪?Rob是对的。这是漫长的一天,我应该避免跨过空白连接字符串。我对它进行了深入的研究。您是否检查了
ConfigurationManager.ConnectionString[“DefaultConnection”]
是否为空?您是否也可以发布堆栈跟踪?Rob是对的。这是漫长的一天,我应该避免跨过空白连接字符串。我对这件事的了解比我想象的要深。
using (var db = new DalContext())
{
    ....
}