Простой Linq Выберите нерабочий


Вопрос

Я пытаюсь выбрать список целых чисел, и это вызывает исключение.

Сообщение об исключении: System.ArgumentException: выражение типа «System.Collections.Generic.IAsyncEnumerable1 [System.Int32]» не может использоваться для параметра типа «System.Collections.Generic.IAsyncEnumerable1 [System.Object]» метода «Система». Collections.Generic.IAsyncEnumerable1 [MyProject.Model.Entities.MyTable] CastModel 'Имя параметра: arg0

Действия по воспроизведению

Модель

public class MyTable { 
  public int MyTableId { get; set; } 
  public int SomeKey { get; set; } 
  public int MyFieldIntegerIWant { get; set; } 
} 

Запустите запрос ниже (или один из них):

public class MyTable { 
  public int MyTableId { get; set; } 
  public int SomeKey { get; set; } 
  public int MyFieldIntegerIWant { get; set; } 
} 

Дополнительные технические данные

Версия EF Core: 1.1.0

Поставщик базы данных: Microsoft.EntityFrameworkCore.SqlServer

Операционная система: Windows 7

IDE: Visual Studio 2015

ОБНОВИТЬ:

The issue had something to do with EF Plus' QueryFilters https://github.com/zzzprojects/EntityFramework-Plus/issues/133

Ответ эксперта

После обсуждения с @thejason,

Проблема не была вызвана Entity Framework Plus, а тем, как обрабатывать EF Core.

Эту проблему можно легко воспроизвести, используя следующий код:

using (var ctx = new CurrentContext())
{
    int keyId = 1;

    var ids = ctx.MyTables
        .Cast<IMyTable>()
        .Cast<MyTable>()
        .Where(x => x.SomeKey.Equals(keyId))
        .Select(x => x.MyFieldIntegerIWant)
        .ToList();
}

Метод Cast будет зафиксирован в EF Core 2.x





Лицензировано согласно: CC-BY-SA
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему