2012-01-21 10 views
0

ASP.NET MVC、VB.NET、SQL Server 2008 R2の、Entity FrameworkのV4ストアドプロシージャから値を受け取る方法は?

私は

PROCEDURE [dbo].[spProfileCount] 
@STARTLETTER char(1) = 'A' 
AS 
BEGIN 
    SET NOCOUNT ON 

    SELECT count(*) 
    FROM [Profils] 
    WHERE LEFT(lastname,1) = @STARTLETTER 

END 

私はEFでストアドプロシージャをインポートして作成された整数値を返すストアドプロシージャを作成しました関数。この関数では、 Int32のスカラーとして Returns a collection ofを定義しました(これは [get column information]ボタンを押したときのものと一致しています)。

これはコントローラでどのように機能しますか?私は成功せずに多くのことを試みました。

I.e.

Dim n As Integer = 0 
n = context.spProfileCount("Q") 

エラー:

Value of type System.data.Objects.ObjectResults(of integer?)' can not be converted to 'integer'.

答えて

3

はあなたがマニュアルに示されているものを試みたことがありますか?

ObjectResult(Of T) Class

// Execute the query and get the ObjectResult. 
ObjectResult<Product> queryResult = query.Execute(MergeOption.AppendOnly); 

// Iterate through the collection of Product items. 
foreach (Product result in queryResult) 
    Console.WriteLine("{0}", result.Name); 

あなたが一列のみを持っているつもり確信している場合は、それだけでqueryResult.Single()

+0

なしになるだろう。それはASP.NET MVC VBですか? My SPはSELECT count(*)の値を返します。したがって、yes:1の値(int32型)を返します。 – Foxbox

+0

私はcontext.ExecuteStoreQuery(Of Integer)( "spProfileCount @ p0"、 "Q")(intellisesnseでビルド)を試みましたが、同じエラーメッセージを返しました... – Foxbox

+0

@Foxbox VB ASP.NET MVCは、あなたの質問。 EFもそうです。重要なのは、 'IEnumerable(Of Integer?)'を実装する 'ObjectResults(Of integer?) '型があるということです。これは 'Integer?'の集合です。このコレクションのどの要素を変数 'n'に代入したいのかを言わなければなりません。それを行う方法の1つは、 'n = context.spProfileCount(" Q ")。Single()'です。これはすべてドキュメントページに記載されています。 – GSerg

関連する問題