2016-11-06 3 views
1

Ich bin derzeit erstellen ein Web-API in. NET CORE mit Entity Framework.Entity Framework Kern Linq Abfrage gibt InvalidCastException

Jedes Mal, wenn ich versuche, einen einzelnen Datensatz von ID mit Linq zu wählen, bekomme ich folgende Fehlermeldung:

An exception of type 'System.InvalidCastException' occurred in Microsoft.EntityFrameworkCore.dll but was not handled in user code.

Additional information: Unable to cast object of type 'System.Int32' to type 'System.Char'.

Dieser Fehler tritt auf, wenn ausführen ich die folgende Linq-Abfrage:

int id = 1; 
User user = context.Users.First(i => i.UserId == id); 

Ich habe bereits überprüft, und beide Feld UserId und Variable id sind ganze Zahlen. Auch die Tabelle enthält genügend Elemente und eine Zeile mit einer id von 1 existiert.

Kann mir jemand sagen, was ich hier falsch mache?

EDIT: Hier ist ein Teil des User Modells:

public class User 
{ 
    public int UserId { get; set; } 
    (...) 
} 
+1

Ich glaube nicht, dass es genug Informationen in der Frage gibt, um diese Frage zu beantworten. Zumindest werden die Tabellendefinition und die Klassendefinition benötigt. – hvd

+0

Verwenden Sie i.UserId.Equals (ID) anstelle von i.UserId == ID –

+0

@hvd Ich fügte einen Teil des 'User' Modells hinzu. – Max

Antwort

1

Hinweis: Die Antwort tatsächlich in einem Kommentar unter der ursprünglichen Frage zur Verfügung gestellt wurde. Ich füge nur ein wenig hinzu, um es sichtbarer und klarer zu machen.


Entity Framework bildet offensichtlich C# Klassen zu Datenbanktabellen über Eigenschaften, die die verschiedenen Spalten in jeder Tabelle darstellen. Wenn nun der Datentyp einer dieser Eigenschaften nicht mit dem Datentyp der entsprechenden Spalte in der Datenbank kompatibel ist, erhalten Sie beim Versuch, etwas aus dieser Tabelle abzurufen, eine System.InvalidCastException, auch wenn die nicht übereinstimmende Eigenschaft nicht direkt in das Aussehen einbezogen ist -oben.

In der Frage war die Abfrage:

User user = context.Users.First(i => i.UserId == id); 

Es spielt keine Rolle, dass sowohl id und es entsprechende Eigenschaft UserId hier miteinander gültig und kompatibel sind, weil das, was geholt wird eine Instanz der ist ganze Klasse User.

Anscheinend ist der Typ einer anderen Eigenschaft in User mit dem Typ einer Spalte mit demselben Namen in der user Tabelle in der Datenbank nicht kompatibel, und der Versuch, es zuzuordnen, löst die obige Ausnahme aus.

+0

Ich habe dies als die Lösung markiert. Vielen Dank! – Max

Verwandte Themen