Entity Framework 第二次迁移时出现核心编译器错误

Entity Framework Core compiler errors on second migration

我有一个 DBContext(继承自 IdentityDbContext)包含 ASP.NET 身份表和一些自定义表。

我为它创建了一个迁移,效果很好。

现在我向 DbContext 添加了一些 DBset 并调用了

dotnet ef migrations add SecondMigration ...

这会导致在创建迁移后出现 2 个编译器错误。

Duplicate 'DbContext' attribute

Type 'IdDbContext' already defines a member called 'BuildModel' with the same paramter types.

我不明白为什么会这样,因为两天前我在另一个项目中做了完全相同的事情(对于不从 identitydbcontext 继承的不同 dbcontext)并且它没有问题。

这件事让我现在已经有点发疯了......

知道我第二次遇到编译器错误的原因吗?

终于找到原因了。不幸的是,这不是问题的根源,但至少可以手动修复。

添加迁移命令为每个迁移创建一个命名空间。

所以我有...Migrations.FirstMigration 和...Migrations.SecondMigration

在创建第二个迁移期间,它会创建文件

  • Timestamp_SecondMigration.cs
  • Timestamp_SecondMigration.Designer.cs
  • IdDbContextModelSnapshot.cs

前两个文件是在命名空间 SecondMigration 中创建的,但由于某种原因,它在命名空间 FirstMigration 中创建了第三个文件。这导致了问题。

只需将命名空间从 FirstMigration 更改为 SecondMigration,编译器错误就消失了...

希望这不会有任何我还不知道的负面影响...


如果您有 1 个 DbContext 和 3 个迁移,应该有 1 个 ModelSnapshot 还是应该有 3 个 ModelSnapshot?