实体框架核心编译器在第二次迁移时出现错误

时间:2019-05-16 13:40:45

标签: c# entity-framework-core ef-migrations entity-framework-core-migrations entity-framework-core-2.2

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

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

现在,我在DbContext中添加了一些数据库集并称为

dotnet ef migrations add SecondMigration ...

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

Duplicate 'DbContext' attribute

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

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

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

有什么想法可能是第二次出现编译器错误的原因吗?

1 个答案:

答案 0 :(得分:0)

最后我弄清楚了原因。不幸的是,不是问题的根源,而是至少是可以手动运行的修复程序。

add migrations命令为每次迁移创建一个名称空间。

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

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

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

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

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

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


如果您有1个具有3个迁移的DbContext,则应该有1个ModelSnapshot还是3个ModelSnapshots?