-
Notifications
You must be signed in to change notification settings - Fork 3.3k
Description
When the entity config doesn't include OwnsMany
the error does not occur. his can be toggled with INCLUDE_ACCOUNT_HOLDERS
: remove INCLUDE_ACCOUNT_HOLDERS
as a compile-time constant from Domain and Infrastructure and the error does not occur.
I could not reproduce when everything was in a single project.
Steps to reproduce:
git clone -b main --depth 1 https://github.com/peteraritchie/EfPendingModelChangesWarning.git
cd EfPendingModelChangesWarning/src
dotnet ef migrations add InitialCreate --startup-project Api --project Infrastructure
dotnet ef database update --startup-project Api --project Infrastructure
Include your code
See steps and https://github.com/peteraritchie/EfPendingModelChangesWarning
Include stack traces
Output from dotnet ef database update
:
System.InvalidOperationException: An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'AccountSqliteDbContext' has pending changes. Add a new migration before updating the database. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.
at Microsoft.EntityFrameworkCore.Diagnostics.EventDefinition`1.Log[TLoggerCategory](IDiagnosticsLogger`1 logger, TParam arg)
at Microsoft.EntityFrameworkCore.Diagnostics.RelationalLoggerExtensions.PendingModelChangesWarning(IDiagnosticsLogger`1 diagnostics, Type contextType)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'AccountSqliteDbContext' has pending changes. Add a new migration before updating the database. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.
Include verbose output
Verbose output from dotnet ef --verbose migrations add InitialCreate --startup-project Api --project Infrastructure
Using project 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj'.
Using startup project 'C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj'.
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\peter\AppData\Local\Temp\tmpbpsjyc.tmp /verbosity:quiet /nologo C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\peter\AppData\Local\Temp\tmpsuql5r.tmp /verbosity:quiet /nologo C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj
Build started...
dotnet build C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj /verbosity:quiet /nologo /p:PublishAot=false
C:\Users\peter\src\experiment\DDDReference\src\Domain\PostalAddress.cs(5,16): warning CS8618: Non-nullable property 'Street' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable. [C:\Users\peter\src\experiment\DDDReference\src\Domain\Pri.DDDReference.Domain.csproj]
Build succeeded.
C:\Users\peter\src\experiment\DDDReference\src\Domain\PostalAddress.cs(5,16): warning CS8618: Non-nullable property 'Street' must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring the property as nullable. [C:\Users\peter\src\experiment\DDDReference\src\Domain\Pri.DDDReference.Domain.csproj]
1 Warning(s)
0 Error(s)
Time Elapsed 00:00:06.83
Build succeeded.
dotnet exec --depsfile C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.deps.json --additionalprobingpath C:\Users\peter\.nuget\packages --additionalprobingpath "C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages" --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.runtimeconfig.json C:\Users\peter\.dotnet\tools\.store\dotnet-ef\9.0.0\dotnet-ef\9.0.0\tools\net8.0\any\tools\netcoreapp2.0\any\ef.dll migrations add InitialCreate --assembly C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Infrastructure.dll --project C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj --startup-assembly C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.dll --startup-project C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj --project-dir C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\ --root-namespace Pri.DDDReference.Infrastructure --language C# --framework net8.0 --nullable --working-dir C:\Users\peter\src\experiment\DDDReference\src --verbose
Using assembly 'Pri.DDDReference.Infrastructure'.
Using startup assembly 'Pri.DDDReference.Api'.
Using application base 'C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0'.
Using working directory 'C:\Users\peter\src\experiment\DDDReference\src\Api'.
Using root namespace 'Pri.DDDReference.Infrastructure'.
Using project directory 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\'.
Remaining arguments: .
Finding DbContext classes...
Finding IDesignTimeDbContextFactory implementations...
Finding DbContext classes in the project...
Found DbContext 'AccountSqliteDbContext'.
Finding application service provider in assembly 'Pri.DDDReference.Api'...
Finding Microsoft.Extensions.Hosting service provider...
Using environment 'Development'.
Using application service provider from Microsoft.Extensions.Hosting.
Using context 'AccountSqliteDbContext'.
Finding design-time services referenced by assembly 'Pri.DDDReference.Api'...
Finding design-time services referenced by assembly 'Pri.DDDReference.Infrastructure'...
No referenced design-time services were found.
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.Sqlite'...
Using design-time services from provider 'Microsoft.EntityFrameworkCore.Sqlite'.
Finding IDesignTimeServices implementations in assembly 'Pri.DDDReference.Api'...
No design-time services were found.
Writing migration to 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Migrations\20241114183900_InitialCreate.cs'.
Writing model snapshot to 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Migrations\AccountSqliteDbContextModelSnapshot.cs'.
Done. To undo this action, use 'ef migrations remove'
verbose output from dotnet ef --verbose database update --startup-project Api --project Infrastructure
Using project 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj'.
Using startup project 'C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj'.
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\peter\AppData\Local\Temp\tmpshmzoi.tmp /verbosity:quiet /nologo C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj
dotnet msbuild /target:GetEFProjectMetadata /property:EFProjectMetadataFile=C:\Users\peter\AppData\Local\Temp\tmprm3hs3.tmp /verbosity:quiet /nologo C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj
Build started...
dotnet build C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj /verbosity:quiet /nologo /p:PublishAot=false
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:03.15
Build succeeded.
dotnet exec --depsfile C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.deps.json --additionalprobingpath C:\Users\peter\.nuget\packages --additionalprobingpath "C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages" --additionalprobingpath "C:\Program Files\dotnet\sdk\NuGetFallbackFolder" --runtimeconfig C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.runtimeconfig.json C:\Users\peter\.dotnet\tools\.store\dotnet-ef\9.0.0\dotnet-ef\9.0.0\tools\net8.0\any\tools\netcoreapp2.0\any\ef.dll database update --assembly C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Infrastructure.dll --project C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\Pri.DDDReference.Infrastructure.csproj --startup-assembly C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0\Pri.DDDReference.Api.dll --startup-project C:\Users\peter\src\experiment\DDDReference\src\Api\Pri.DDDReference.Api.csproj --project-dir C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\ --root-namespace Pri.DDDReference.Infrastructure --language C# --framework net8.0 --nullable --working-dir C:\Users\peter\src\experiment\DDDReference\src --verbose
Using assembly 'Pri.DDDReference.Infrastructure'.
Using startup assembly 'Pri.DDDReference.Api'.
Using application base 'C:\Users\peter\src\experiment\DDDReference\src\Api\bin\Debug\net8.0'.
Using working directory 'C:\Users\peter\src\experiment\DDDReference\src\Api'.
Using root namespace 'Pri.DDDReference.Infrastructure'.
Using project directory 'C:\Users\peter\src\experiment\DDDReference\src\Infrastructure\'.
Remaining arguments: .
Finding DbContext classes...
Finding IDesignTimeDbContextFactory implementations...
Finding DbContext classes in the project...
Found DbContext 'AccountSqliteDbContext'.
Finding application service provider in assembly 'Pri.DDDReference.Api'...
Finding Microsoft.Extensions.Hosting service provider...
Using environment 'Development'.
Using application service provider from Microsoft.Extensions.Hosting.
Using context 'AccountSqliteDbContext'.
Finding design-time services referenced by assembly 'Pri.DDDReference.Api'...
Finding design-time services referenced by assembly 'Pri.DDDReference.Infrastructure'...
No referenced design-time services were found.
Finding design-time services for provider 'Microsoft.EntityFrameworkCore.Sqlite'...
Using design-time services from provider 'Microsoft.EntityFrameworkCore.Sqlite'.
Finding IDesignTimeServices implementations in assembly 'Pri.DDDReference.Api'...
No design-time services were found.
System.InvalidOperationException: An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'AccountSqliteDbContext' has pending changes. Add a new migration before updating the database. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.
at Microsoft.EntityFrameworkCore.Diagnostics.EventDefinition`1.Log[TLoggerCategory](IDiagnosticsLogger`1 logger, TParam arg)
at Microsoft.EntityFrameworkCore.Diagnostics.RelationalLoggerExtensions.PendingModelChangesWarning(IDiagnosticsLogger`1 diagnostics, Type contextType)
at Microsoft.EntityFrameworkCore.Migrations.Internal.Migrator.Migrate(String targetMigration)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.UpdateDatabase(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabaseImpl(String targetMigration, String connectionString, String contextType)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.UpdateDatabase.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
An error was generated for warning 'Microsoft.EntityFrameworkCore.Migrations.PendingModelChangesWarning': The model for context 'AccountSqliteDbContext' has pending changes. Add a new migration before updating the database. This exception can be suppressed or logged by passing event ID 'RelationalEventId.PendingModelChangesWarning' to the 'ConfigureWarnings' method in 'DbContext.OnConfiguring' or 'AddDbContext'.
Include provider and version information
EF Core version: 9.0.0 (first reproduced with 8.0.10
Database provider: Microsoft.EntityFrameworkCore.Sqlite 9.0.0
Target framework: NET 8.0
Operating system: Windows
IDE: Visual Studio 2022 17.12.0