c#とLINQが、必ずしもテーブル構造を返さず、結果セットを返すデータ構造体を処理する一般的な問題を解決する方法を決定する際に問題があります。LINQで結果セットの戻り値型を作成する方法
私が働くストアドプロシージャを持っている、と私のDBML
[Function(Name="dbo.p_GetObject")]
public int p_GetObject([Parameter(Name="ObjectType", DbType="NVarChar(200)")] string objectType, [Parameter(Name="ItemState", DbType="Bit")] System.Nullable<bool> itemState, [Parameter(Name="IsPublished", DbType="Bit")] System.Nullable<bool> isPublished)
{
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), objectType, itemState, isPublished);
return ((int)(result.ReturnValue));
}
DBMLは、戻り値の型がある(なし)と、これが核心の問題である可能性がありと言うには、それが含まれています。しかし、私は結果セットと一致するDBMLオブジェクトを持っていません。
SPは3つのパラメータを取り、複数の行を持つ3つの列(ID、名前、値)を持つ結果セットを返します。私はこのためにデータオブジェクトを作成し、それが
私はこのために関数呼び出しを書くとき、私は立ち往生したResultSet呼び出すことができます。
public List<resultset> GetObject(string objectType, bool itemState, bool isPublished)
{
MyDataContext.p_GetObject(objectType, itemState, isPublished);
}
私の質問は以下のとおりです。私は持っていますか
ストアドプロシージャへのデータコンテキストコールは、私のresultSetオブジェクトに値を設定しますか?より良いアプローチがありますか?戻り値の型は何ですか? SQLビュー?良い提案を探しています...
SPはアプリから呼び出されて正常に動作しますが、結果をPOCOに戻すための最良の方法はわかりません。あなたが言及したように、生成された型を調べます。上記の方法で具体的なヒントがあれば助かります。ありがとうMarc。 –
WSDLで型の名前を変更するか、独自の型を作成して上記のように "select"を使うかわかりません...あいまいな領域を明確にすれば、詳細を追加できます。 –
マーク、問題を理解しました。私のストアドプロシージャは動的SQLを使用していました。ここでSQLは入力パラメータに基づいて形成され、次にSQL文字列が実行されます。そのようなprocは、DBMLデザイナーの型を自動生成しないので、私が自分のISingleResultを書く必要がありました。 –