You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
There is no actual database involved, this issue merely pertains to the creation of migrations. Using the dotnet-ef tool with EntityFrameworkCore.FSharp alongside Pomelo to create database migrations for MySql from a code-first model, works in almost all cases until the introduction of FSharp.Core.Option types in the model. EFCore.FSharp uses these types to model the nullable/required nature of a field.
The first migration with these types present succeeds, but subsequent migrations (regardless of change) fail. The migration being staged in the example project linked above is a no-change migration. It appears to fail when the existing model is being diffed.
It is unclear which project between Pomelo or EFCore.FSharp is to blame for this failure, and I am opening tickets with both projects as a result (relevant bug report for EFCore.FSharp here). EFCore.FSharp supports this scenario with other connectors such as Microsoft.EntityFrameworkCore.Sqlite without this issue.
The failure message and stacktrace appear as:
# dotnet ef migrations add test4
Build started...
Build succeeded.
System.NullReferenceException: Object reference not set to an instance of an object.
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Initialize(ColumnOperation columnOperation, IColumn column, RelationalTypeMapping typeMapping, Boolean isNullable, IEnumerable`1 migrationsAnnotations, Boolean inline)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(IColumn
source, IColumn target, DiffContext diffContext)+MoveNext()
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection[T](IEnumerable`1 sources, IEnumerable`1 targets, DiffContext diffContext, Func`4 diff, Func`3 add, Func`3 remove, Func`4[] predicates)+MoveNext()
at System.Linq.Enumerable.ConcatIterator`1.MoveNext()
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Diff(ITable source, ITable target, DiffContext diffContext)+MoveNext()
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.DiffCollection[T](IEnumerable`1 sources, IEnumerable`1 targets, DiffContext diffContext, Func`4 diff, Func`3 add, Func`3 remove, Func`4[] predicates)+MoveNext()
at System.Linq.Enumerable.ConcatIterator`1.MoveNext()
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.Sort(IEnumerable`1 operations, DiffContext diffContext)
at Microsoft.EntityFrameworkCore.Migrations.Internal.MigrationsModelDiffer.GetDifferences(IRelationalModel source, IRelationalModel target)
at Microsoft.EntityFrameworkCore.Migrations.Design.MigrationsScaffolder.ScaffoldMigration(String migrationName, String rootNamespace, String subNamespace, String language)
at Microsoft.EntityFrameworkCore.Design.Internal.MigrationsOperations.AddMigration(String name, String outputDir, String contextType, String namespace)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigrationImpl(String name,
String outputDir, String contextType, String namespace)
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.AddMigration.<>c__DisplayClass0_0.<.ctor>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.<>c__DisplayClass3_0`1.<Execute>b__0()
at Microsoft.EntityFrameworkCore.Design.OperationExecutor.OperationBase.Execute(Action action)
Object reference not set to an instance of an object.
Further technical details
MySQL version: 10.8.3
Operating system: Windows
Pomelo.EntityFrameworkCore.MySql version: 6.0.2
Microsoft.AspNetCore.App 6.0.7
Other details about my project setup:
dotnet-cli 6.0.302
FSharp net6.0
EntityFrameworkCore.FSharp 6.0.7
The text was updated successfully, but these errors were encountered:
Steps to reproduce
The issue
There is no actual database involved, this issue merely pertains to the creation of migrations. Using the
dotnet-ef
tool withEntityFrameworkCore.FSharp
alongside Pomelo to create database migrations for MySql from a code-first model, works in almost all cases until the introduction ofFSharp.Core.Option
types in the model. EFCore.FSharp uses these types to model the nullable/required nature of a field.The first migration with these types present succeeds, but subsequent migrations (regardless of change) fail. The migration being staged in the example project linked above is a no-change migration. It appears to fail when the existing model is being diffed.
It is unclear which project between Pomelo or EFCore.FSharp is to blame for this failure, and I am opening tickets with both projects as a result (relevant bug report for EFCore.FSharp here). EFCore.FSharp supports this scenario with other connectors such as
Microsoft.EntityFrameworkCore.Sqlite
without this issue.The failure message and stacktrace appear as:
Further technical details
MySQL version: 10.8.3
Operating system: Windows
Pomelo.EntityFrameworkCore.MySql version: 6.0.2
Microsoft.AspNetCore.App 6.0.7
Other details about my project setup:
dotnet-cli 6.0.302
FSharp net6.0
EntityFrameworkCore.FSharp 6.0.7
The text was updated successfully, but these errors were encountered: