dotnet / dotnet/efcore

DefaultTypeMappings do not seem to be applied in queries.

Open
#34,850 5 comments 1 reaction 0 assignees View on GitHub
area-query area-type-mapping customer-reported
Dominant language
C#
Stars
14.8k
Forks
3.4k
PR merge metrics
PR metrics pending

Description

## File a bug

### Include your code

[DefaultTypeMappingsTests.zip](https://github.com/user-attachments/files/17292439/DefaultTypeMappingsTests.zip)

Change between SqlServer and Sqlite by modifying the method called in line 6.

### Include stack traces

SqlServer:
```
System.InvalidCastException
HResult=0x80004002
Message=Failed to convert parameter value from a NonGenericWrapper to a Int32.
Source=Microsoft.Data.SqlClient
StackTrace:
at Microsoft.Data.SqlClient.SqlCommand.<>c.b__211_0(Task`1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke() in /_/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/TaskContinuation.cs:line 180
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in /_/src/libraries/System.Private.CoreLib/src/System/Threading/ExecutionContext.cs:line 179
--- End of stack trace from previous location ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state) in /_/src/libraries/System.Private.CoreLib/src/System/Threading/ExecutionContext.cs:line 203
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread) in /_/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs:line 2345
--- End of stack trace from previous location ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.d__18.MoveNext() in /_/src/EFCore.Relational/Storage/RelationalCommand.cs:line 658
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.d__18.MoveNext() in /_/src/EFCore.Relational/Storage/RelationalCommand.cs:line 719
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.d__21.MoveNext() in /_/src/EFCore.Relational/Query/Internal/SingleQueryingEnumerable.cs:line 401
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.d__7`2.MoveNext()
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.d__20.MoveNext() in /_/src/EFCore.Relational/Query/Internal/SingleQueryingEnumerable.cs:line 323
at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /_/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 154
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d__14`1.MoveNext() in /_/src/EFCore/Query/ShapedQueryCompilingExpressionVisitor.cs:line 138
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d__14`1.MoveNext() in /_/src/EFCore/Query/ShapedQueryCompilingExpressionVisitor.cs:line 150
at Program.<<$>g__ExecuteQueriesInContext|0_2>d.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 64
at Program.<<$>g__ExecuteWithSqlServer|0_0>d.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 19
at Program.<$>d__0.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 6
at Program.(String[] args)

This exception was originally thrown at this call stack:
System.Convert.ChangeType(object, System.Type, System.IFormatProvider) in Convert.cs
Microsoft.Data.SqlClient.SqlParameter.CoerceValue(object, Microsoft.Data.SqlClient.MetaType, out bool, out bool, bool)

Inner Exception 1:
InvalidCastException: Object must implement IConvertible.
```

Sqlite:
```
System.InvalidOperationException
HResult=0x80131509
Message=No mapping exists from object type DefaultTypeMappingsTests.NonGenericWrapper to a known managed provider native type.
Source=Microsoft.Data.Sqlite
StackTrace:
at Microsoft.Data.Sqlite.SqliteValueBinder.Bind() in /_/src/Microsoft.Data.Sqlite.Core/SqliteValueBinder.cs:line 236
at Microsoft.Data.Sqlite.SqliteParameter.Bind(sqlite3_stmt stmt) in /_/src/Microsoft.Data.Sqlite.Core/SqliteParameter.cs:line 225
at Microsoft.Data.Sqlite.SqliteParameterCollection.Bind(sqlite3_stmt stmt) in /_/src/Microsoft.Data.Sqlite.Core/SqliteParameterCollection.cs:line 331
at Microsoft.Data.Sqlite.SqliteCommand.d__54.MoveNext() in /_/src/Microsoft.Data.Sqlite.Core/SqliteCommand.cs:line 323
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult() in /_/src/Microsoft.Data.Sqlite.Core/SqliteDataReader.cs:line 151
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior) in /_/src/Microsoft.Data.Sqlite.Core/SqliteCommand.cs:line 312
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReaderAsync(CommandBehavior behavior, CancellationToken cancellationToken) in /_/src/Microsoft.Data.Sqlite.Core/SqliteCommand.cs:line 406
at Microsoft.Data.Sqlite.SqliteCommand.d__60.MoveNext() in /_/src/Microsoft.Data.Sqlite.Core/SqliteCommand.cs:line 420
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.d__18.MoveNext() in /_/src/EFCore.Relational/Storage/RelationalCommand.cs:line 658
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.d__18.MoveNext() in /_/src/EFCore.Relational/Storage/RelationalCommand.cs:line 719
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.d__21.MoveNext() in /_/src/EFCore.Relational/Query/Internal/SingleQueryingEnumerable.cs:line 401
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable`1.AsyncEnumerator.d__20.MoveNext() in /_/src/EFCore.Relational/Query/Internal/SingleQueryingEnumerable.cs:line 323
at System.Runtime.CompilerServices.ConfiguredValueTaskAwaitable`1.ConfiguredValueTaskAwaiter.GetResult() in /_/src/libraries/System.Private.CoreLib/src/System/Runtime/CompilerServices/ConfiguredValueTaskAwaitable.cs:line 154
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d__14`1.MoveNext() in /_/src/EFCore/Query/ShapedQueryCompilingExpressionVisitor.cs:line 138
at Microsoft.EntityFrameworkCore.Query.ShapedQueryCompilingExpressionVisitor.d__14`1.MoveNext() in /_/src/EFCore/Query/ShapedQueryCompilingExpressionVisitor.cs:line 150
at Program.<<$>g__ExecuteQueriesInContext|0_2>d.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 64
at Program.<<$>g__ExecuteWithSqlite|0_1>d.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 36
at Program.<$>d__0.MoveNext() in G:\Source\repos\DefaultTypeMappingsTests\Program.cs:line 6
at Program.(String[] args)
```

### Include provider and version information

EF Core version:
Database provider: Microsoft.EntityFrameworkCore.SqlServer and Microsoft.EntityFrameworkCore.Sqlite
Target framework: .NET 8.0
Operating system: Windows 10 & 11
IDE: Visual Studio 2022 17.11.4

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.