0

にデータ型はnvarcharを変換する、しかし私は、私はこのエラーを取得し、ストアドプロシージャを実行している:は、Entity&SQL - エラーEntity Frameworkのでは日時

Error converting data type nvarchar to datetime

私はフロントエンド2017-11-07T00:00:00から値を取得し、 DateTimeオブジェクトに変換され、preAuthorize.DepositDateとなります。私はSQLプロファイラを見て、文を見つけ

var StartingDate = new SqlParameter("@StartingDate", preAuthorize.DepositDate); 

dbContextScope.DbContexts.Get<BAEntities>().Database.ExecuteSqlCommand(
    "My_Procedure @StartingDate, ...", 
    StartingDate, 
    ... 
); 

exec sp_executesql N'My_Procedure @StartingDate, ...', N'@StartingDate datetime, ...', @StartingDate='2017-11-07 00:00:00' ... 

私はSQLでこれを実行し、それが同じエラーが発生し、私は、このようなストアドプロシージャを呼び出します。奇妙なのは、StartingDateを削除しても、私はまだエラーが発生するということです。このストアドプロシージャは何年も続くので、ストアドプロシージャのロジックではなく、ストアドプロシージャを呼び出す方法と関係していると思います。

私は私の値を取り、

EXEC Web_Schedule_AddNewSchedule 
    @StartingDate = '2017-11-07', 
    ... 

に直接差す場合、これは正常に動作し、データを挿入するので、何かが上記sp_executesqlの文が間違っています。

編集:私は、文字列に私はこれを行った後それが唯一の作品@StartingDate = @StartingDate,設定

dbContextScope.DbContexts.Get<BAEntities>().Database.ExecuteSqlCommand(
     "My_Procedure @StartingDate = @StartingDate, ...", 
     StartingDate, 
     ... 
); 

に私の呼び出しを変更は、しかし、私はオンライン見るすべての例はこれを持っていません。なぜ誰が知っていますか?

+1

_IこれをSQLで実行しても同じエラーが発生します。これをSQL Serverの 'SELECT CONVERT(DATETIME、 '2017-11-07T00:00:00')'で実行してエラーが発生しましたか?私はそうは思わない。 2017-11-07T00:00:00の代わりに別の値を渡している可能性があります。 – Sami

+0

私の勘違いは、予想されるものとは異なる形であなたのdatetimeをフォーマットしていると言います。 –

+0

@Sami 'sp_executesql'コードは@ StartingDate = '2017-11-07 00:00:00'になりますので、値は正常に渡されます。 – DevEng

答えて

0

ExecuteSqlCommandに設定可能なすべてのパラメータを設定する必要があります。