14

jestem w poszukiwaniu dobrego podejścia do importowania danych z dostępem ms i powiązać go z każdym modelu z wzorca MVCimportu Pani dostępu do danych przez zaprogramowanych


Oto podejście, które myślimy, aby po

Podejście 1: plik

  • Otwarte MS Access
  • Otwarta baza
  • otworzyć wszystkie tabele
  • Import danych z wszystkich tabel i wiążą je do modelu
  • Zamknij wszystkie tabele
  • Close bazie
  • Zamknij plik

Podejście 2:

  • Połącz Ms Access Database w Asp.Net MVC
  • Otwórz bazę danych
  • przekazać zapytanie
  • pobrać dane i powiązać go modelować
  • blisko bazie

Które podejście jest lepsze i jak mogę ją wdrożyć?

UPDATE: I wprowadziły podejście 2 i jego działa dobrze, czy ktoś wie jak wdrożyć podejście 1

+0

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

+0

kiedy mówisz "importuj dane" - do czego importujesz? inna baza danych? – StanK

+0

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

Odpowiedz

0

Co należy zrobić, to zbudować swój model według tabeli. Tak więc klasa modelu powinna mieć właściwości, które odpowiadają polom tabeli. Następnie, gdy potrzebujesz modelu, możesz zapytać ponownie o DB i zapełnić właściwości modelu odpowiednio.

1

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

0

nie zrozumiałe podejście 1.

Czy jest to wymóg stosowania dostęp? Widziałem, że istnieje wiele problemów z bazą danych opartą na plikach (takich jak Access), więc lepiej importuj wszystkie dane do SQL Server lub jakiejś innej bazy danych z Access, a następnie użyj opcji 2.

Jako bazę danych już utworzoną możesz użyć Entity Framework Baza danych pierwszego podejścia do wiązania go.

1

Użyj Entity Framework. Utwórz ViewModel do mapowania.

0

Musisz dodać używając System.Data.OleDb; w pliku nagłówka I dodaj te Dostawca = Microsoft.ACE.OLEDB.12.0; DataSource = | DataDirectory | \ myAccessFile.mdb; Persist Security Info = Fałsz; linia String Connection ciąg połączenia użycie pobrać bazę
aktualizacje MS Access przy użyciu OleDbCommand OleDbConnection

i MS Access kwerendy podobnie jak zapytania sql

Powiązane problemy