Ich habe ein Problem beim Lesen von Daten aus einer Tabelle mit Entity Framework.
Was ich versuche, ist eine Zeile aus der Tabelle nach Id
zu lesen.
Dies ist meine SQL-Tabellendefinition:
%Vor%Und das ist meine Klassendefinition:
%Vor% Ich möchte die Id
aus einer Abfragezeichenfolge lesen und sie verwenden, um die Zeile auszuwählen:
Ich bekomme den Fehler von der Zeile: return query.First();
Dies ist die Fehlerbeschreibung:
An exception of type 'System.InvalidOperationException' occurred in EntityFramework.dll but was not handled in user code
Additional information: The 'Ware_Price' property on 'Ware' could not be set to a 'System.Double' value. You must set this property to a non-null value of type 'System.Single'.
Weiß jemand, wie ich das beheben kann?
PS .: Ich habe bereits versucht, Ware_Price
in System.Single
type zu ändern, aber es hat immer noch nicht funktioniert.
A float(53)
auf der SQL-Seite ist 8 Bytes. A float
(aka Single
) auf der C # -Seite ist 4 Bytes. Sie haben einen Datentyp, der nicht übereinstimmt zwischen SQL Server und .NET.
Die 'Ware_Price' Eigenschaft auf 'Ware' konnte nicht auf einen 'System.Double' Wert gesetzt werden.
Dies bedeutet, dass Entity Framework eine System.Double
( double
) von der Tabelle erhalten hat.
Sie müssen diese Eigenschaft auf einen Wert ungleich Null vom Typ 'System.Single' festlegen.
Dies bedeutet, dass Ihre Eigenschaft nur Werte vom Typ System.Single
( float
) akzeptieren kann. Der Entity Framework hat den Unterschied erkannt und mit InvalidOperationException
reagiert.
Um es zu beheben, müssen Sie den Ware_Price
-Datentyp in Ihrer Ware
-Klasse bis zu einem double
erhöhen.
Ich würde weiter vorschlagen, dass für monetäre Werte decimal
der richtige Datentyp wäre, sowohl in SQL als auch in .NET, insbesondere , wenn Sie damit rechnen wollen (Summierung eines großen Anzahl der Preise, zum Beispiel).
Tags und Links sql-server c# entity-framework