Entrambi gli approcci richiedono la connessione al database e la mappatura dei contenuti nel modello. Suppongo che Approach 1 sia 'quando l'app web si connette e copia tutto il contenuto del database in memoria e acceda se da lì' e Approach 2 è 'quando ho bisogno di visualizzare alcuni dati, collegare il database e copiare i contenuti specifici al mio modello '.
Se questo è il caso, allora è raccomandato l'approccio 2 (e hai dichiarato di averlo fatto, quindi tutto va bene).
Approccio 1 può funzionare ok-ish per i database di dimensioni più piccole, ma:
- È perdere tutti i [acido] [1] bontà -y che il database fornisce
- tua bloccato con le variabili globali di raccolta - non il concetto più amato nelle app Web
- Hai un intero database inutilmente in memoria.Il punto lento nelle app Web è solitamente la rete, pochi millisecondi per caricare i dati quando necessario non è nulla rispetto al tempo impiegato dal tuo html per raggiungere il browser
Se si dovesse provare ad avvicinarsi (non consigliato , non fare, un gattino è danneggiato ogni volta che viene eseguito il codice), quindi il modo più semplice sarebbe quella di avere qualcosa di simile nel file 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
}
poi, nel vostro controller:
public ActionResult Index()
{
return View(MvcApplication.globalTable1);
}
E la tua vista:
@model List<MvcApplication1.MvcApplication.MyTable1>
@{
ViewBag.Title = "Index";
}
<h2>Blah</h2>
<ul>
@foreach (var i in Model) {
<li>@i.idField - @i.contentField </li>
}
</ul>
(Ho già detto non farlo?)
vorrei andare con il secondo approccio e "come posso implementarlo "Dipende da te. Puoi sicuramente trovare alcune informazioni su google. Prova qualcosa e se si verifica qualche errore o se ne blocca qualcuna, quindi pubblica una domanda. Allora la gente potrebbe desiderare di più di aiutarti. – chamara
quando si dice "importa dati" - a cosa lo si importa? un altro database? – StanK
@StanK Importa i dati con il contesto sopra indicato per avvicinarsi a 1 è copiare tutti i dati dal database di Access e collegarli al Modello [architettura MVC ASP.NET] –