EntityFramework Database.EnsureCreated() 试图在错误的路径中创建 mdf

EntityFramework Database.EnsureCreated() trying to create mdf in wrong path

我在使用 Entity Framework 核心的方法 Database.EnsureCreated() 时遇到奇怪的问题。它发生在许多干净安装的计算机上。

如您所见,它尝试使用此路径创建 mdf 文件

c:\Users\AdminBLTManager.mdf

虽然应该是:

c:\Users\Admin\BLTManager.mdf

代码没什么特别的:

class CreateInitialDataIfDbIsEmptyBgService : IHostedService
{
    private readonly ILogger _logger;
    private readonly IServiceProvider _serviceProvider;

    public CreateInitialDataIfDbIsEmptyBgService(IServiceProvider serviceProvider, ILogger<MigrateDatabaseBgService> logger)
    {
        _serviceProvider = serviceProvider;
        _logger = logger;
    }

    public async Task StartAsync(CancellationToken cancellationToken)
    {
        using var scope = _serviceProvider.CreateScope();
        _logger.LogWarning("Ensuring database exists...");
        var dbContext = scope.ServiceProvider.GetRequiredService<ApplicationDbContext>();
        dbContext.Database.EnsureCreated();

        _logger.LogWarning("Ensuring initial admin user exists when db is newly created...");
    }

    public Task StopAsync(CancellationToken cancellationToken) => Task.CompletedTask;
}

这是 ConfigureServices() 中的 运行

services.AddHostedService<CreateInitialDataIfDbIsEmptyBgService>();

奇怪的是这只发生在某些计算机上,而不是在我的开发环境中。

编辑:

连接字符串:

 "ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\MSSQLLocalDB;Database=BLTManager;Trusted_Connection=True;MultipleActiveResultSets=true"

},

正在注册 ApplicationDbContext:

public void ConfigureServices(IServiceCollection services)
    {
        services.AddCors();

        services.AddDbContext<ApplicationDbContext>(options =>
            options.UseSqlServer(
                Configuration.GetConnectionString("DefaultConnection")));
        services.AddDatabaseDeveloperPageExceptionFilter();
        services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = true)
            .AddRoles<IdentityRole>()
            .AddEntityFrameworkStores<ApplicationDbContext>();
  .....
}

这看起来像是一个旧的 LocalDB 错误 we hit once。我认为它在 2017 年最初发布后的某个时间得到修复。尝试更新以查看它是否消失。