5

ASP.NET/MVC 3.0 VS2010サンプルのEntity Frameworkで作業するのが初めてです。関数のインポートとして2つのストアドプロシージャをインポートし、それぞれに複雑なデータ型を作成しました。複雑なデータ型のEFでストアドプロシージャを呼び出す

私は、次のC#のコードを実行しようとしています:

public ComplexDataType RunStoredProc() 
{ 
    var context = new DbEntities(); 
    int param1 = 370; 
    int param2 = -1; 
    string param3 = "Current"; 

    ComplexDataType result = new ComplexDataType; 
    result = context.StoredProc(param1, param2, param3); 
    return result; 
} 

をそして、私はエラーを取得しています:私は間違って

Cannot implicitly convert data type 
    System.Data.Objects.ObjectResult(ComplexDataType) to 'ComplexDataType' 

何をしているのですか?ストアドプロシージャの結果を複雑なデータ型に適切に格納するにはどうすればよいですか?

+0

は、マッピングとStoredProcメソッドを示しています。 – Pawel

答えて

1

試してみて、これを変更します。これに

result = context.StoredProc(param1, param2, param3); 

result = (ComplexDataType) context.StoredProc(param1, param2, param3); 
+0

同じエラーです。複雑なデータ型としてキャストすることはできません。上記と同じエラーが表示されます。他のアイデア? –

2

あなたは、ストアドプロシージャからの結果を得るためにDbSet.SqlQueryメソッドを使用することができます。

int param1=12; 
int param2=53; 
var results=context.ComplexDataTypes.SqlQuery. 
         ("dbo.YourSPNameHere @p0 @p1", param1,param2).Single(); 

このようなコレクションがあると仮定すると、DbContextクラスが定義されています。

public DbSet<ComplexDataType> ComplexDataTypes { set;get;} 

さらに詳しい情報はhereです。

+0

プロジェクトはcontext.Database.SqlQueryを認識していませんが、context.ExecuteStoreQueryのオプションがあります。同じコマンドで上記の構文を実行すると、同じエラーが発生します。暗黙的に変換することはできません。他のアイデア? –

+0

どのエンティティフレームワークのバージョンを使用していますか?ストアドプロシージャが何かを返すのですか? – Shyju

+0

EF 4.0を使用する。ストアドプロシージャは約10列、通常は5〜15行を返します –

関連する問題