我在我的.NET Core控制台应用程序中使用Entity Framework Core。我将我的连接字符串存储在App.config
文件中,并在上下文类中使用ConfigurationManager
来访问连接字符串。
当我想将新迁移添加到我的项目时,我收到以下错误:
System.NullReferenceException:未将对象引用设置为对象的实例。
在C:\ .. \ Context.cs中的EF_tut.Context.OnConfiguring(DbContextOptionsBuilder optionsBuilder):第12行 在Microsoft.EntityFrameworkCore.DbContext.get_InternalServiceProvider() 在Microsoft.EntityFrameworkCore.Design.Design.MigrationsOperations.AddMigration的Microsoft.EntityFrameworkCore.Design.Internal.DbContextOperations.CreateContext(String contextType)中的Microsoft.EntityFrameworkCore.Internal.InternalAccessorExtensions.GetService [TService](IInfrastructure
1 accessor)
1 factory)(字符串名称,字符串) Microsoft.EntityFrameworkCore上的Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.Design(String name,String outputDir,String contextType)的Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase。<> c__DisplayClass3_0`1.b__0()处的outputDir,String contextType)。 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.
}
}
当我尝试在main方法中使用ConfigurationManger
获取连接字符串时,我得到连接字符串,但是当我添加迁移时,我得到Null Reference错误。
我不太确定,但我认为你必须修复连接字符串。在课堂上试试这个:
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
optionsBuilder.UseSqlServer("Server=YourPcName\\YourSqlServerName;Database=YourDbName;Trusted_Connection=True;MultipleActiveResultSets=True;");
}
}