Entity Framework : Die angegebene Umwandlung von einer materialisierten " - System.String' Typ 'System.DateTime' geben ist nicht gültig

Ich habe eine SP, die ich ausführen mit Hilfe von SqlQuery Methode der DbContext.Database. Ich rufe es wie folgt:

EDIT 1:- übergabe DateTime jetzt

var t = form["datetime"];//value is 2013-May-08 09:30
DateTime dtm;
if (!DateTime.TryParse(t, out dtm))//successfully parses
     dtm = new DateTime(2013, 05, 8, 9, 30, 0);
var rTime= new SqlParameter("@rTime", dtm);
var result = UoW.ExecuteSp<SPResult>("spResult @rTime", rTime).ToList();

Die Letzte Zeile wirft der Ausnahme, dass die angegebene Umwandlung von string zu DateTime ist nicht gültig.

Folgenden ist die definition der SP.

ALTER PROC [dbo].[spResult]
(
    @rTime SMALLDATETIME --VARCHAR(32)
)
AS
BEGIN
--OTHER CODE
END

Wenn ich Sie direkt ausführen die SP im SQL Management Studio läuft es ohne problem:

EXEC spResult ='2013-May-08 09:30'

Im SP der string umgewandelt wird, um Datum-Uhrzeit wie folgt ein:

 

@resultAt SMALLDATETIME = CAST(@rTime AS SMALLDATETIME)

 

 

Was läuft hier falsch?

Ist die input-parameter an die gespeicherte Prozedur ein string?
Schlechte Gewohnheiten zu treten : die Wahl der falschen Datentyp - verwenden Sie immer den am besten geeigneten Datentyp - das ist, was Sie dort für, nachdem alle! Also, wenn Ihre gespeicherte Prozedur erwartet, dass ein SMALLDATETIME - warum werden nicht die parameter von diesem Typ??
Ich war vorbei DateTime Objekt auf den ersten, aber das war nicht zu geben richtige Ergebnis :'(
Aber dann sollten Sie sich warum war es, was Ihnen die falschen Ergebnisse - nur das ändern in einen string ist der denkbar schlechteste Ansatz....

InformationsquelleAutor TheVillageIdiot | 2013-05-09

Schreibe einen Kommentar