14

io sono alla ricerca di un buon approccio per importare i dati da accessi ms e associarlo a qualsiasi modello di un pattern MVCImporta Ms accesso ai dati da tecniche di programmazione


Qui è l'approccio che stiamo pensando a seguire

approccio 1: il file

  • aperto Ms Access
  • Aprire banca dati
  • Aprire tutte le tabelle
  • Importare i dati di tutte le tabelle e le legano ad un modello
  • Chiudere tutte le tabelle
  • Chiudi banca dati
  • Chiudi file di

Approccio 2:

  • Connect Ms Access Database in Asp.Net MVC
  • Aprire il database
  • passare una query
  • recuperare i dati e associarlo a modellare
  • vicino banca dati

Quale approccio è migliore e come posso implementarlo?

UPDATE: Ho implementato Approccio 2 e le sue opere belle, qualcuno sa come implementare Approccio 1

+0

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

+0

quando si dice "importa dati" - a cosa lo si importa? un altro database? – StanK

+0

@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] –

risposta

0

Che cosa si dovrebbe fare è costruire il vostro modello in base al vostro tavolo. Quindi la classe del modello dovrebbe avere proprietà che corrispondono ai campi della tabella. Quindi, quando si richiede il modello, si esegue una query sul database e si popolano le proprietà del modello di conseguenza.

1

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?)

0

non ho capito Approccio 1.

E 'un obbligo di utilizzare Access? Ho visto che ci sono molti problemi con il database basato su file (come Access) quindi meglio importare tutti i dati su SQL Server o altri database da Access e quindi utilizzare l'opzione 2.

Come il tuo database già creato puoi usare Entity Framework primo approccio al database per collegarlo.

1

Utilizzare Entity Framework.Create ViewModel to map.

0

È necessario aggiungere utilizzando System.Data.OleDb; nel file di intestazione E aggiungere questi Provider = Microsoft.ACE.OLEDB.12.0; DataSource = | DataDirectory | \ myAccessFile.mdb; Persist Security Info = False; linea nella stringa di connessione stringa di connessione utilizzo recuperare banca dati
aggiornamento MS-Access utilizzando OleDbCommand, OleDbConnection

e MS-Access di query come query SQL