1

Visual Studio 2008 を使用しており、2 つの異なる結果セットを選択するストアド プロシージャを作成しました。ストアド プロシージャを linq to sql dbml datacontext クラスにドラッグすると、Visual Studio によって cs ファイルに次のコードが作成されます。

[Function(Name="dbo.List_MultiSelect")]
public ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult> List_MultiSelect()
{
    IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())));
    return ((ISingleResult<DataAccessLayer.DataEntities.List_MultiSelectResult>)(result.ReturnValue));
}

デザイナーは、IMultipleResults を使用するコードを生成するべきではありませんか? または、コードを渡す必要がありますか?

4

1 に答える 1

1

デザイナーを使用すると返されますISingleResultが、SqlMetal を使用すると、IMultipleResult期待どおりのが生成されます。それ以外の場合は、そこに飛び込んで直接微調整する必要があります。

簡単な方法は、SqlMetal を使用し、生成されたコードをコピーして貼り付けることです。後続のコード生成によって上書きされるため、デザイナー コードに貼り付けるのは理想的ではないことに注意してください。おそらく、関連するコードを部分クラスに移動して、この問題を回避できます。

ここでの私の詳細な回答は、この問題に対処しています: SqlMetal は、ストアド プロシージャ (LINQ) の戻り値の型を間違って生成します。

于 2010-02-02T21:08:47.347 に答える