Simple Linq Select funktioniert nicht

asp.net-core c# entity-framework-core entity-framework-plus linq

Frage

Ich versuche eine Liste von Ganzzahlen auszuwählen und es wird eine Ausnahme ausgelöst.

Ausnahmemeldung: System.ArgumentException: Ausdruck des Typs 'System.Collections.Generic.IAsyncEnumerable1 [System.Int32]' kann nicht für Parameter des Typs 'System.Collections.Generic.IAsyncEnumerable1 [System.Object]' der Methode 'System verwendet werden. Collections.Generic.IAsyncEnumerable1 [MyProject.Model.Entities.MyTable] CastModel 'Parametername: arg0

Schritte zum Reproduzieren

Modell

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

Führen Sie die folgende Abfrage aus (oder eine ähnliche):

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

Weitere technische Details

EF Core-Version: 1.1.0

Datenbankanbieter: Microsoft.EntityFrameworkCore.SqlServer

Betriebssystem: Windows 7

IDE: Visual Studio 2015

AKTUALISIEREN:

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

Expertenantwort

Nach der Diskussion mit @thejason,

Das Problem wurde nicht von Entity Framework Plus verursacht, sondern von EF Core.

Das Problem kann einfach mit dem folgenden Code reproduziert werden:

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();
}

Die Cast-Methode wird in EF Core 2.x korrigiert




Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum