Oba podejścia będą wymagać połączenia z bazą danych i zmapowania zawartości do modelu. Zakładam, że Podejście 1 to "kiedy aplikacja internetowa rozpoczyna łączenie i kopiowanie całej zawartości bazy danych do pamięci i dostęp, jeśli z tego pochodzą" i Podejście 2 to ", kiedy muszę wyświetlić niektóre dane, połączyć bazę danych i skopiować określoną zawartość do mojego modelu ".
W takim przypadku zalecane jest Podejście 2 (i stwierdzono, że zrobiono tak, aby wszystko było dobrze).
Approach 1 może pracować Ok-ish dla mniejszych rozmiarach baz danych, ale:
- tracisz wszystko [kwas] [1] dobroć -y, że baza danych zapewnia
- Twój zatrzymany z globalnych zmiennych Collection - niezbyt lubiany koncept w aplikacjach internetowych
- Niepotrzebnie przechowujesz całą bazę danych w pamięci.Twoim powolnym punktem w aplikacjach internetowych jest zwykle sieć, kilka milisekund do wczytania danych w razie potrzeby jest niczym w porównaniu z czasem, w jakim html dotrze do przeglądarki
Jeśli próbowałeś podejścia pierwszego (niezalecane , nie rób, kociak jest skrzywdzone za każdym razem ten kod jest uruchamiany), to najprostszym sposobem byłoby mieć coś takiego w swoim pliku Global.asax.cs:
public class MvcApplication : System.Web.HttpApplication {
public static List<MyTable1> globalTable1;
public static List<MyTable2> globalTable2;
protected void Application_Start() {
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
var DatabaseMagic = new DatabaseAccessClass("a:\path\to\database.mdb");
globalTable1 = DatabaseMagic.getDataForTableOne(); //However you do your loading and mapping
globalTable2 = DatabaseMagic.getDataForTableTwo(); //ditto
}
potem w kontrolerach:
public ActionResult Index()
{
return View(MvcApplication.globalTable1);
}
A twój widok:
@model List<MvcApplication1.MvcApplication.MyTable1>
@{
ViewBag.Title = "Index";
}
<h2>Blah</h2>
<ul>
@foreach (var i in Model) {
<li>@i.idField - @i.contentField </li>
}
</ul>
(Nie wspominając już tego nie robi?)
pójdę z drugim podejściu i „w jaki sposób mogę je zaimplementować "zależy od Ciebie. Na pewno znajdziesz informacje w Google. Spróbuj czegoś i jeśli wystąpi jakiś błąd lub zatrzymaj się w miejscu, w którym zamieszczasz pytanie. Wtedy ludzie mogą bardziej chcieć ci pomóc. – chamara
kiedy mówisz "importuj dane" - do czego importujesz? inna baza danych? – StanK
@StanK Import danych z powyższym kontekstem do podejścia 1 jest skopiowanie wszystkich danych z bazy danych Access i powiązanie ich z modelem [architektura ASP.NET MVC] –