Мне нужно привести Boolean из запроса DB2 к Booleans в .NET Core
У меня есть запрос для проверки соответствия строки с Regex.
Я пробовал несколько приведений: BOOLEAN, TINYINT, SMALLINT.
CASE WHEN (REGEXP_LIKE(TESTNAME.COL1, 'Test1')) THEN CAST(true AS BOOLEAN) ELSE CAST(false AS SMALLINT) END as Error
Моя сущность выглядит примерно так:
public class ErrorView {
[Required] public string Key { get; set; }
public bool Error { get; set; }
}
Соединениек базе данных может быть установлено, это не проблема.
Однако я получаю следующее
Ошибка: System.InvalidCastException - Невозможно привести объект типа 'System.Int16'to type' System.Boolean '
.
Точно такой же код прекрасно работает в сочетании с MySQL Server (с учетом некоторых адаптаций в SQL-запросе). Сам запрос работает в Datagrip.
Редактировать 1: Я использую пакет NuGet IBM.EntityFrameworkCore в версии 1.3.0.100. А для разработки я использую Windows 10 (64-битную) на x64-процессоре.
Редактировать 2: Это то, что я называю:
ExternalDbContextFactory dbContextFactory = new ExternalDbContextFactory(applicationDbContextOptions);
var context = dbContextFactory.Create();
var sqlRuleResult = context.EntityName.FromSql(regexRule);
Я получаю ошибку приведения в методе Microsoft. Попытка привести его вручную в Entity не работает, поскольку она не достигает этой точки.
Stacktrace:
в Microsoft.EntityFrameworkCore.Metadata.Internal.EntityMaterializerSource.TryReadValue [TValue] (ValueBuffer & valueBuffer, индекс Int32, свойство IPropertyBase)
в lambda_method (Closure, MaterializationContext)
в Microsoft.EntityFrameworkCore.Query.ExpressionVisitors.Internal.UnbufferedEntityShaxtConte ()ValueBuffer & valueBuffer)
в Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.BufferlessMoveNext (DbContext _, логический буфер)
в Microsoft.EntityFraginInEx[TState, TResult] (состояние TState, Func 3 operation, Func
3 verifySucceeded)
в Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.MoveNext ()
в Microsoft.EntityFrameworkC.Query.Internal.LinqOperatorProvider.ExceptionInterceptor`1.EnumeratorExceptionInterceptor.MoveNext ()