Ошибка при создании строки запроса: выражению «@list» в дереве SQL не назначено сопоставление типов.MySql

Форум по Mysql
Ответить
Anonymous
 Ошибка при создании строки запроса: выражению «@list» в дереве SQL не назначено сопоставление типов.

Сообщение Anonymous »

Есть идеи, что я делаю неправильно, или это просто ошибка в библиотеке?
Я использую MySql.EntityFrameworkCore версии 10.0.0-rc и пытаюсь выполнить следующий запрос:
var list = new List { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
var arr = list.ToArray();
var enumerable = list.AsEnumerable();

var optionsBuilder = new DbContextOptionsBuilder();
optionsBuilder
.UseMySQL(gemasConnectionString);

using var context = new MyDbContext(optionsBuilder.Options);
var query = context.MyTable
.Where(x => x.Plz != null && arr.Contains(x.Plz));
var result = await query.ToListAsync();

I tryed this with list, array or enumerable but have the same result.

Определение таблицы:
CREATE TABLE IF NOT EXISTS `MyTable` (
`ID` int(10) NOT NULL AUTO_INCREMENT,
`A` int(10) DEFAULT '0',
`B` varchar(10) DEFAULT NULL,
`C` varchar(50) DEFAULT NULL,
`D` varchar(50) DEFAULT NULL,
`E` int(10) DEFAULT '0',
`F` varchar(10) DEFAULT NULL,
`ts` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`PLZ` varchar(10) DEFAULT NULL,
`Nr` int(10) DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `PLZ` (`PLZ`)
) ENGINE=InnoDB AUTO_INCREMENT=789 DEFAULT CHARSET=utf8;

Сущность:
public partial class MyTable
{
public int Id { get; set; }
public int? A { get; set; }
public string? B { get; set; }
public string? C { get; set; }
public string? D { get; set; }
public int? E { get; set; }
public string? F { get; set; }
public DateTime Ts { get; set; }
public string? Plz { get; set; }
public int? Nr { get; set; }
}

Исключение:
System.InvalidOperationException
HResult=0x80131509
Message=Expression '@list' in the SQL tree does not have a type mapping assigned.
Source=Microsoft.EntityFrameworkCore.Relational
StackTrace:
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.VisitExtension(Expression expression)
at Microsoft.EntityFrameworkCore.Query.SqlExpressions.InExpression.VisitChildren(ExpressionVisitor visitor)
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.VisitExtension(Expression expression)
at Microsoft.EntityFrameworkCore.Query.SqlExpressions.SqlBinaryExpression.VisitChildren(ExpressionVisitor visitor)
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.VisitExtension(Expression expression)
at Microsoft.EntityFrameworkCore.Query.SqlExpressions.SelectExpression.VisitChildren(ExpressionVisitor visitor)
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.VisitExtension(Expression expression)
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.VisitExtension(Expression expression)
at Microsoft.EntityFrameworkCore.Query.RelationalTypeMappingPostprocessor.Process(Expression expression)
at Microsoft.EntityFrameworkCore.Query.RelationalQueryTranslationPostprocessor.ProcessTypeMappings(Expression expression)
at Microsoft.EntityFrameworkCore.Query.RelationalQueryTranslationPostprocessor.Process(Expression query)
at MySql.EntityFrameworkCore.Query.Internal.MySQLQueryTranslationPostprocessor.Process(Expression query)
at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutorExpression[TResult](Expression query)
at Microsoft.EntityFrameworkCore.Query.QueryCompilationContext.CreateQueryExecutor[TResult](Expression query)
at Microsoft.EntityFrameworkCore.Storage.Database.CompileQuery[TResult](Expression query, Boolean async)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.CompileQueryCore[TResult](IDatabase database, Expression query, IModel model, Boolean async)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.c__DisplayClass11_0`1.b__0()
at Microsoft.EntityFrameworkCore.Query.Internal.CompiledQueryCache.GetOrAddQuery[TResult](Object cacheKey, Func`1 compiler)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteCore[TResult](Expression query, Boolean async, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.QueryCompiler.ExecuteAsync[TResult](Expression query, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryProvider.ExecuteAsync[TResult](Expression expression, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Query.Internal.EntityQueryable`1.GetAsyncEnumerator(CancellationToken cancellationToken)
at System.Runtime.CompilerServices.ConfiguredCancelableAsyncEnumerable`1.GetAsyncEnumerator()
at Microsoft.EntityFrameworkCore.EntityFrameworkQueryableExtensions.d__67`1.MoveNext()
at Program.d__1.MoveNext() in C\...\Program.cs:line 80



Подробнее здесь: https://stackoverflow.com/questions/798 ... not-have-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «MySql»