IRelationalDatabaseCreator service

本文关键字:service IRelationalDatabaseCreator | 更新日期: 2023-09-27 18:29:33

昨天我开始学习ASP.NET 5 MVC 6 with Entity Framework 7.0.0-rc1-final,并遵循了本教程:链接。问题是当我运行它时,它会在这个函数上抛出一个NullPointerException:

 if (serviceProvider.GetService<IRelationalDatabaseCreator>().Exists())
        {//adding some entities }

我的连接字符串是:"Server=(localdb)''MSSQLLocalDB; Database=Test; Trusted_Connection=True; MultipleActiveResultSets=true"

在Startup.cs中,我有这样的代码:

public void ConfigureServices(IServiceCollection services)
 {
      services.AddEntityFramework()
              .AddSqlServer()
              .AddDbContext<Models.HRPContext>(options =>
              {
                  options.UseSqlServer(Configuration["Data:ConnectionString"]);
              });
      ....... 
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
{
      Utils.AddSampleData.Initialize(app.ApplicationServices);
      ......
}

数据库测试尚未创建。有人解决了这个例外吗?感谢

IRelationalDatabaseCreator service

那个教程已经过时了。请使用这个。

在更新后的教程中,if语句不存在。相反,它通过检查上下文对象的Database属性来检查数据库是否存在:

if (context.Database == null)
{
    throw new Exception("DB is null");
}

如果您想调试应用程序来解决此问题,请在这行上设置一个断点

if (serviceProvider.GetService<IRelationalDatabaseCreator>().Exists())

并检查哪个成员是CCD_ 4。我怀疑您没有注册IRelationalDatabaseCreator,或者由于任何原因,它没有被您的IoC容器提取。