4

入力パラメータを使用してこのストアドプロシージャを呼び出したいと思います。

proc [dbo].[Invoice_GetHomePageInvoices] (

      @FinancialYearStartDate datetime = null
,      @FinancialYearEndDate datetime = null

これに関する問題は、通常、コードからストアドプロシージャを呼び出す方法です。

return _db.Database.SqlQuery<HomePageInvoice>(string.Format("EXEC Invoice_GetHomePageInvoices @FinancialYearStartDate = '{0}', @FinancialYearEndDate = '{1}'", financialYear.StartDate.ToString(), financialYear.EndDate.ToString()));

基本的に日時を文字列に変換したので、これは機能しません。

私はこれをどのように行うことになっていますか?

4

2 に答える 2

6

基本的に次のように、sql parametersを使用する必要があります。

var startDate = new SqlParameter("FinancialYearStartDate", dateTimeValueHere);
var endDate = new SqlParameter("FinancialYearEndDate", dateTimeValueHere);

return _db.Database.SqlQuery<HomePageInvoice>("Invoice_GetHomePageInvoices", startDate, endDate);

詳細:ストアド プロシージャで DbContext.Database.SqlQuery<TElement>(sql, params) を使用するには? EF コードファースト CTP5

于 2012-04-16T22:11:45.043 に答える
0
  1. 日付を特定の形式の文字列に変換します。
  2. SQL コードを使用して、SQL 日時オブジェクトに変換します。

SQL サーバー (Microsoft) を使用する場合: http://msdn.microsoft.com/en-us/library/ms187928.aspx "convert(datetime, '{0}', 103)", FinancialYear.EndDate.ToString("MM /dd/yyyy")

編集:Ropstahの方法は実際には優れています。これは私が以前行っていた方法です:P

于 2012-04-16T22:16:25.370 に答える