我在我的 .NET Core 控制台应用程序中使用 Entity Framework Core。我将连接字符串存储在App.config
文件中并ConfigurationManager
在上下文类中使用来访问连接字符串。
当我想向我的项目添加新迁移时,出现以下错误:
System.NullReferenceException:对象引用未设置为对象的实例。
在 EF_tut.Context.OnConfiguring(DbContextOptionsBuilder optionsBuilder) 在 C:\..\Context.cs:line 12
在 Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider()
在 Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService[TService](IInfrastructure1 accessor)
1 工厂)在 Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType) 在 Microsoft.EntityFrameworkCore.Design.OperationExecutor 的 Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)。 Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.b__0() 中的 AddMigrationImpl(String name, String outputDir, String contextType) Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
at Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(Func你调用的对象是空的。
这是我的App.config
文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="EfTutDb"
connectionString="Data Source=.;Initial Catalog=EF_tut;Integrated Security=True;"/>
</connectionStrings>
</configuration>
这是我的上下文类:
class Context : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(ConfigurationManager.ConnectionStrings["EfTutDb"].ConnectionString); // Line 12.
}
}
当我尝试ConfigurationManger
在 main 方法中使用获取连接字符串时,我得到了连接字符串,但是当我添加迁移时,我得到空引用错误。