2009-09-03 15 views
0

私はストアドプロシージャGetMyTimeを持っています。 1つのパラメータint PersonIDを持ち、データを返します。それをEDMXに追加して関数としてインポートした後。 EF 3.5のストアドプロシージャからインポート関数のコードを書き込む方法は?

public ObjectResult<Nullable<global::System.DateTime>> GetMyTime(Nullable<global::System.Int32> PersonID) 
     { 
      ObjectParameter[] PersonIDParameters; 
      if (PersonID.HasValue) 
      { 
       PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID", PersonID)}; 
      } 
      else 
      { 
       PersonIDParameters = new ObjectParameter[]{new ObjectParameter("PersonID",typeof(global::System.Int32))}; 
      } 
      return base.ExecuteFunction<Nullable<global::System.DateTime>>("GetMyTime", PersonIDParameters); //this line cause error 
     } 

しかし、私は最後の行でエラーが発生します:その後、私は以下のようにコードを書くために4.0をモックアップしよう「?のSystem.DateTime」タイプ2 エラージェネリック型またはメソッド 'System.Data.Objects.ObjectContext.ExecuteFunction(string、params System.Data.Objects.ObjectParameter [])'で型パラメータ 'TElement'として使用することはできません。ボクシングの変換 'System.DateTimeからですか?'を 'System.Data.Objects.DataClasses.IEntityWithChangeTracker'に設定します。

修正方法?

答えて

1

MSDNによれば、ExecuteFunction<TElement>"TElement"は、エンティティタイプです。あなたはスカラー値を返そうとしています。

スカラ値を返すことはv3.5では壊れていますが、EF v4で作業していると言われています。私の提案は、EDMデザイナーを介してスカラー関数のインポートをワイヤードアップし、生成されたコードを使用してスカラー値を返す方法を正確に説明することです。

+0

ありがとうございました。私は4.0ではなく3.5で作業しています(XPではVS 2008 sp1)。コードを修正して動作させることは可能ですか? – KentZhou

+0

3.5では、エンティティタイプを返すprocsのみをマップできます。 –

関連する問題