C# 无法在EF6中创建上下文
我已经使用EF很多次了,但我似乎不明白为什么会发生这种情况 我有一个包含两个项目的解决方案,一个是我的公共库,用于其他几个拥有我所有实体的应用程序,另一个是我的更新程序控制台应用程序。在公共库中,我有我的上下文,看起来是这样的C# 无法在EF6中创建上下文,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,我已经使用EF很多次了,但我似乎不明白为什么会发生这种情况 我有一个包含两个项目的解决方案,一个是我的公共库,用于其他几个拥有我所有实体的应用程序,另一个是我的更新程序控制台应用程序。在公共库中,我有我的上下文,看起来是这样的 public class DalContext : DbContext { public DalContext() : base(ConfigurationManager.ConnectionStrings["DefaultConnection"].Connect
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。我可以很好地进行添加迁移。我不知道,我被难住了
我引用了其他应用程序,在这些应用程序中我使用了这个,但我找不到任何差异来解释为什么会发生这种情况。我知道这将是一件显而易见的事情。在这种情况下,做一件事总是一种很好的做法。也就是说,继续移除东西直到它起作用。缩小误差。直到最低限度 您可以尝试:
- 将其替换为实际所有连接字符串:
。这是最有可能的。“DefaultConnection”可能不在web.config/app.config文件中,这可以解释为什么相同的代码适用于其他主机项目ConfigurationManager.ConnectionString[“DefaultConnection”]。ConnectionString
- 删除/替换此:
Database.SetInitializer(新的CreateDatabaseIfNotExists())代码>
- 删除/替换此:
modelBuilder.Conventions.Remove()代码>
鉴于您提供的信息,我们不可能进一步帮助您。在这种情况下,做一件事总是一个很好的做法。也就是说,继续移除东西直到它起作用。缩小误差。直到最低限度 您可以尝试:
- 将其替换为实际所有连接字符串:
。这是最有可能的。“DefaultConnection”可能不在web.config/app.config文件中,这可以解释为什么相同的代码适用于其他主机项目ConfigurationManager.ConnectionString[“DefaultConnection”]。ConnectionString
- 删除/替换此:
Database.SetInitializer(新的CreateDatabaseIfNotExists())代码>
- 删除/替换此:
modelBuilder.Conventions.Remove()代码>
鉴于您提供的信息,我们无法进一步帮助您。您是否检查了
ConfigurationManager.ConnectionString[“DefaultConnection”]
是否为空?您是否也可以发布堆栈跟踪?Rob是对的。这是漫长的一天,我应该避免跨过空白连接字符串。我对它进行了深入的研究。您是否检查了ConfigurationManager.ConnectionString[“DefaultConnection”]
是否为空?您是否也可以发布堆栈跟踪?Rob是对的。这是漫长的一天,我应该避免跨过空白连接字符串。我对这件事的了解比我想象的要深。
using (var db = new DalContext())
{
....
}