Entity Frameworkのストアドプロシージャからintのリストを返そうとしています。
ストアドプロシージャを適切に作成し、Entity Frameworkに追加しました。私はそれを複雑なタイプにバインドしようとしていますが、関数インポートを開くと.
結果セットではなくintのみを返す複合型を自動生成します。
結果セットとしてリストを返すエンティティをインポートする方法を誰かが知っていますか?
次のサンプルストアドプロシージャを作成して、int値のリストを返します。
CREATE PROCEDURE dbo.GetListOfInt
AS BEGIN
SELECT *
FROM
(VALUES (42), (4711), (8088), (80286), (80486), (655235)) AS VT(VC)
END
次に、このストアドプロシージャをEFに追加しました.edmx
モデルを作成し、この関数インポートを作成しました:
ストアドプロシージャをクエリすると、int
値で構成される結果セットが返されることがわかります。したがって、関数のインポートダイアログで戻り値をScalar:Int32のコレクションと定義します。
その後、そのストアドプロシージャを呼び出して、次のような結果を取得できます。
using (testEntities ctx = new testEntities())
{
ObjectResult<int?> result = ctx.GetListOfInt();
foreach (int intValue in result.AsEnumerable())
{
Console.WriteLine("INT value returned: {0}", intValue);
}
}
ストアドプロシージャからリストを取得するだけの場合は、特別なものをマップする必要はありません。
このように呼び出すだけです:
var results = dbContext.Database.SqlQuery<int>("SP_YourSP").ToList();
これはintのリストを返すはずです
マップされたクラスのリストを取得したい場合は、これを試してください
var results = dbContext.Database.SqlQuery<youclass>("SP_YourSP").ToList();