私はASP.NET MVCプロジェクトで既存のデータベースを使用しようとしています。私は私の(Microsoft SQL)データベース( "。\ SQLEXPRESS.Databases")に "Test"というテーブルを持つ "Data Connection"を作成します。このテーブルには、 "ID(int)"と "name(nvarchar(MAX))"の2つの列があります。私はこの新しいクラスを入れて「モデル」フォルダにASP.NET MVCデータベースへのアクセス
:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Test
{
public int ID { get; set; }
public string name { get; set; }
}
}
その後(「コントローラ」に)私は、新しいコントローラー、「HelloWorldController」を持っています。
public ActionResult Index()
{
DataSet data;
DataTable table;
using (SqlConnection connection = new SqlConnection(connectionString))
{
connection.Open();
SqlCommand select = new SqlCommand("SELECT * FROM Test", connection);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = select;
data = new DataSet();
adapter.Fill(data, "Test");
table = data.Tables[0]; //is the [0] really correct?
}
return View(/* HOW DO I GET THE TABLE TO THE VIEW? */);
}
は今、私は私の「Index.cshtml」ファイル内のテーブルの行を表示したいと思います(「ビュー」で):この中で、私はこの機能を持っています。コントローラからビューにテーブルを取得するにはどうすればよいですか?私が見つけたのは "@model"と "IEnumerable"でしたが、テーブルを変換できないので動作しません。私は完全に間違って何かをやって
1.アム:
@model IEnumerable<MyProject.Models.Test>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var item in Model) {
<p>blaaaah</p>
}
は今3つの質問がありますか? (DB-Accessの方法)
2.簡単な方法がありますか? (すべてのアダプタがなくても)
3. 1!& &!2の場合、どうすれば動作させることができますか? (私のテーブルを「知る」ためにビューファイルを入手)の助けを
おかげで、
よろしく、
CABA
は、詳細な指示をいただき、ありがとうございます。私はあなたのソリューションが本当に好きです。今までは、 "収穫"は見たことがありません。それは本当に問題ではありません。私はあなたの構造に合うように私のものを書き換えました(変更はそれほど大きくありませんでした)。結果にはかなり満足しています。どうもありがとう。 – Cabadath
ちょっと考えました。「利回りリターン」が良いことであるかどうかは疑問です。 'IEnumerable'の代わりに 'IList 'を返すほうがいいですか? 'yield return'の使用に利点がありますか? –
KSK
@KSK、イテレータを使用すると、データセットを遅延ロードすることができます。たとえば、ビューの最初の50行だけを表示する必要がある場合は、すべての結果をメモリにロードしてスローするのは無駄です。明らかに私の例では、ビュー内のすべての結果を反復処理していますが、実際のアプリケーションでは、おそらくページ分割をしたいと思っています。 –