ASP.NET MVC, Base de données access
J'ai essayé d'utiliser une base de données dans mon ASP.NET projet MVC. J'ai créer une "Connexion de Données" à mon (Microsoft SQL Base de données (".\SQLEXPRESS.Les bases de données"), qui a la table "Test". Ce tableau a deux colonnes, "ID (int)" et "nom (de type nvarchar(MAX))".
Dans les "Modèles" dossier j'ai mis cette nouvelle classe:
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; }
}
}
Ensuite (dans "Contrôleurs") j'ai un nouveau Contrôleur, "HelloWorldController". C'est de cette fonction:
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? */);
}
Maintenant je voudrais afficher les lignes de la table dans mon Index.cshtml" fichier (dans "Vues"). Comment puis-je obtenir la table à partir du Contrôleur à la vue? Ce que j'ai trouvé avec "@modèle" et "IEnumerable", mais cela ne fonctionne pas, car je ne peut pas convertir ma table.
@model IEnumerable<MyProject.Models.Test>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@foreach (var item in Model) {
<p>blaaaah</p>
}
Maintenant, il y a trois questions:
1. Suis-je en train de faire quelque chose de complètement faux? (Méthode de DB-Accès,..)
2. Est-il un moyen plus facile de faire cela? (Sans adaptateur,..)
3. Si !1&&!2, Comment puis-je le faire fonctionner? (Obtenir le fichier de vue de "savoir" à ma table)
Merci pour l'aide,
En ce qui concerne,
Caba
OriginalL'auteur Cabadath | 2012-05-02
Vous devez vous connecter pour publier un commentaire.
Je vous recommandons d'utiliser les modèles de vue et de se débarrasser des ensembles de données et des Tables. Oublions ces types de données. Ils sont l'héritage.
Par exemple, vous pourriez avoir une méthode (qui finira par externaliser dans un repositorhy pour éviter de polluer votre contrôleur de code avec base de données access):
et puis votre contrôleur de l'action:
So far So good. Enfin, le correspondant fortement typé pour afficher les résultats:
ou utiliser le
WebGrid
aide si vous préférez:Juste une pensée... je doute si le
yield return
est une bonne chose à faire. N'est-il pas mieux retourner unIList<Test>
au lieu deIEnumerable<Test>
? Est-il un avantage dans l'utilisation de layield return
?à l'aide d'un itérateur permet paresseusement charger le jeu de données. Par exemple, si vous avez besoin d'afficher uniquement les 50 premières lignes de votre avis, il serait un gaspillage de charger tous les résultats en mémoire et de les jeter. Évidemment, dans mon exemple, je suis une itération sur tous les résultats de la vue, mais dans une application réelle, vous êtes probablement désireux de faire quelques pagination.
OriginalL'auteur Darin Dimitrov