0

Visual Studio 2012 を使用して ASP.NET Web アプリケーションを作成しています。ASP.NET 4.5 チュートリアルの概要を使用してみましたが、単純なローカル データベースが作成され、すべてのクエリがコードに直接記述されています。私がアクセスしているデータベース (SQL Server 2008) には、15 個の複雑なストアド プロシージャがあり、それらを再入力する必要はありません。

チュートリアルの例を使用するDBContextと、テーブルからすべてのデータを取得するだけで問題なく動作しますが、データベースにあるストアド プロシージャをどのように使用すればよいでしょうか? 既に存在するストアド プロシージャを使用する最善の方法を教えてください。

これまでに見つけたすべての質問 (および回答) は、以前のバージョンの Visual Studio を扱っています。これらを使用できることはわかっていますが (VS 2012 は下位互換性をサポートしているため)、最大限に活用したいと考えています。私が持っていてVS 2010の「ベストプラクティス」を使用していないソフトウェアの.

既存のストアド プロシージャの使用方法を教えていただければ、または本、Web サイト、またはこれを示す他の何かに誘導していただければ、本当に感謝します。ハッピーコーディング!そして、お時間をありがとう!

4

2 に答える 2

0

いくつかの異なるソースからの情報をつなぎ合わせる必要がありましたが、これを機能させることができました。これが私の手順です(必要以上に行った可能性がありますが、うまくいきました)、他の誰かを助けるかもしれない場合に備えて:

  1. MyContext という名前のクラスをプロジェクトに追加し、それが DBContext であることを伝え、次のように既存のデータベースを指すようにしました。

    { public class MyContext : DbContext { public MyContext() : base("name=MyDatabase") { } } }

MyDatabase は、webconfig ファイルの接続文字列でデータベースを参照する実際の名前に置き換えられます。

  1. ストアド プロシージャによって返されるフィールドのみを公開する ProductList というクラスを作成しました。

    { public class ProductList { [ScaffoldColumn(false)] public int ProductID { get; 設定; } [必須、StringLength(100)、Display(Name = "Model")] public string ProductName { get; 設定; } }

}

  1. 私は実際に、単なる DataReapeater であるユーザー コントロール (.ascx) を作成しました。Page_Load のすぐ下にあるコントロールのコード ビハインドで、GetMostPopular というメソッドを作成しました。

    public IEnumerable GetMostPopular() { var db = new MyContext(); IEnumerable 結果 = db.Database.SqlQuery("MostPopularProducts"); 結果を返します。}

IEnumerable と SQLQuery の <> 内は、作成したクラスの名前です。これは、ストアド プロシージャ「MostPopularProducts」によって返されるフィールドとまったく同じです。

  1. 次に、DataRepeater で、「SelectMethod」として GetMostPopular を使用しました。


    '><%# Eval("製品名") %>

5.次に、表示したいページにユーザー コントロールをドラッグ アンド ドロップしました。

これが他の誰かに役立つことを願っています。ハッピーコーディング!

于 2012-12-09T15:14:05.743 に答える
0

SqlClient、SqlCommand、SqlConnection を使用することをお勧めします...有機的な出力で非常に簡単です!

于 2012-12-10T06:09:00.147 に答える