にデータ型は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,
...
);
に私の呼び出しを変更は、しかし、私はオンライン見るすべての例はこれを持っていません。なぜ誰が知っていますか?
_IこれをSQLで実行しても同じエラーが発生します。これをSQL Serverの 'SELECT CONVERT(DATETIME、 '2017-11-07T00:00:00')'で実行してエラーが発生しましたか?私はそうは思わない。 2017-11-07T00:00:00の代わりに別の値を渡している可能性があります。 – Sami
私の勘違いは、予想されるものとは異なる形であなたのdatetimeをフォーマットしていると言います。 –
@Sami 'sp_executesql'コードは@ StartingDate = '2017-11-07 00:00:00'になりますので、値は正常に渡されます。 – DevEng