为什么 EF Core 会抛出 "Database already exists"?
Why does EF Core throws "Database already exists"?
我的创业条件:
- 我有一个使用 EF Core 的 .Net Core 应用程序(均为 2.2);
- 我在本地 SQLServer 上已有一个数据库;
- 我使用内置 DI 来提供我的 DbContext:
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString))
;
- 我使用 Fluent API 配置我的上下文(以空方法开始)和
DbContextOptions<MyDbContext> options
构造函数;
- 我有几个来自其他项目的迁移存在于数据库中,不存在于我当前的项目.
使用所有提到的我在空模型上执行 (dotenet ef migrations add Initial --project ../MyDALProject
) 以获得空的初始迁移。那很好用。然后我 运行 dotenet ef database update --project ../MyDALProject
将此空迁移应用到数据库。不过,我得到 "Database 'TargetDatabase' already exists. Choose a different database name"。
顺便说一句:其他项目使用同一个 Db 也一样好。
可能是什么问题?如何让它发挥作用?
P.S.: 其他项目的上下文,我已经提到,被搭建起来并映射到一些现有的表。在脚手架之后,迁移和更新按预期工作。这个问题只依赖于这个项目,它将把新表带到现有的数据库中。
毕竟,我决定手动将脚本应用于数据库,然后发现数据库无法访问...最后,我完美地恢复了它和所有内容运行。
对我来说,我重命名了包含 mdf 和日志目录的 db 目录。
必须归还它的名称才能使迁移正常工作。
仍然无法访问问题。
我的创业条件:
- 我有一个使用 EF Core 的 .Net Core 应用程序(均为 2.2);
- 我在本地 SQLServer 上已有一个数据库;
- 我使用内置 DI 来提供我的 DbContext:
services.AddDbContext<MyDbContext>(options => options.UseSqlServer(connectionString))
; - 我使用 Fluent API 配置我的上下文(以空方法开始)和
DbContextOptions<MyDbContext> options
构造函数; - 我有几个来自其他项目的迁移存在于数据库中,不存在于我当前的项目.
使用所有提到的我在空模型上执行 (dotenet ef migrations add Initial --project ../MyDALProject
) 以获得空的初始迁移。那很好用。然后我 运行 dotenet ef database update --project ../MyDALProject
将此空迁移应用到数据库。不过,我得到 "Database 'TargetDatabase' already exists. Choose a different database name"。
顺便说一句:其他项目使用同一个 Db 也一样好。
可能是什么问题?如何让它发挥作用?
P.S.: 其他项目的上下文,我已经提到,被搭建起来并映射到一些现有的表。在脚手架之后,迁移和更新按预期工作。这个问题只依赖于这个项目,它将把新表带到现有的数据库中。
毕竟,我决定手动将脚本应用于数据库,然后发现数据库无法访问...最后,我完美地恢复了它和所有内容运行。
对我来说,我重命名了包含 mdf 和日志目录的 db 目录。 必须归还它的名称才能使迁移正常工作。
仍然无法访问问题。