Entity Framework 5 でストアド プロシージャを関数としてインポートしようとすると、次のエラーが発生します。最近、新しいバージョンの EF を参照するようにデータ プロジェクトを更新しました。
ExecuteFunction の型パラメーター 'SSDS.Data.testy_Result' は、関数によって返される型 'SSDS.Data.testy_Result' と互換性がありません。
どのストアド プロシージャでも機能させることができません...これが私の簡単なテストです。
CREATE PROCEDURE testy
AS
BEGIN
select 'hello' as hello
END
GO
上記の例外で壊れます:
public virtual ObjectResult<testy_Result> testy()
{
return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<testy_Result>("testy");
}
また、モデル デザイナーの [関数のインポートの編集] ウィンドウで結果を文字列スカラーに設定しても、エラーは発生しません。
私は次のように関数を呼び出しています:
private Entities db = new Entities();
var x = db.testy();
ここで私が見逃していることは明らかですか?私のプロジェクトにはいくつかの edmx ファイルがあり、他のファイルは古いバージョンの EF で作成されています (そして ObjectContext を使用しています)。
関数のマッピング:
その他の関数マッピングの詳細:
testy_Result クラス:
public partial class testy_Result
{
public string hello { get; set; }
}