C# 第二次迁移时实体框架核心编译器错误

C# 第二次迁移时实体框架核心编译器错误,c#,entity-framework-core,entity-framework-migrations,entity-framework-core-migrations,entity-framework-core-2.2,C#,Entity Framework Core,Entity Framework Migrations,Entity Framework Core Migrations,Entity Framework Core 2.2,我有一个DBContext(从IdentityDbContext继承)保存ASP.NET标识表和一些自定义表 我为它创建了一个迁移,效果很好 现在,我向DbContext添加了一些dbset,并调用 dotnet ef migrations add SecondMigration ... 这会在创建迁移后导致2个编译器错误 Duplicate 'DbContext' attribute 及 我不明白为什么会这样,因为两天前我在一个不同的项目中做了完全相同的事情(对于不同的dbcontext,

我有一个DBContext(从IdentityDbContext继承)保存ASP.NET标识表和一些自定义表

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

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

dotnet ef migrations add SecondMigration ...
这会在创建迁移后导致2个编译器错误

Duplicate 'DbContext' attribute

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

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


你知道第二次出现编译器错误的原因是什么吗?

最后我找到了原因。不幸的是,这不是问题的根源,但至少是一个手动修复

addmigrations命令为每个迁移创建一个名称空间

所以我有…迁移。第一次迁移和…迁移。第二次迁移

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

  • Timestamp_SecondMigration.cs
  • 时间戳_SecondMigration.Designer.cs
  • IdDbContextModelSnapshot.cs
前两个文件是在命名空间SecondMigration中创建的,但出于某种原因,它会在命名空间FirstMigration中创建第三个文件。这就造成了问题

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

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



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

您可以共享一个代码来重现问题吗?尝试指定要为其创建迁移的迁移类
dotnet ef迁移添加SecondMigration--context DbContext
不幸的是我不能。我指定了-o output dir,-p项目,-s一个启动项目,它应该是3个模型快照,因为每个快照根据数据提供程序而有所不同
Type 'IdDbContext' already defines a member called 'BuildModel' with the same paramter types.