To w takim razie jak sprawdzić by aplikacja nie była świadoma połączenia z EF?
Dzieląc na warstwy. Podziel aplikację na dwa projekty:
Web - aplikacja MVC
Services - logika aplikacji
Kontrolery MVC nie wykonują żadnej logiki, tylko wołają Serwisy. Serwisy operują na kontekście i encjach bazodanowych, a do MVC zwracają odpowiednie ViewModele. (W tym podejściu tylko Serwisy wiedzą o EF.)
Możesz to sobie bardziej skomplikować, np. dodać repozytoria (jako interfejsy w Serwisach) i nowy projekt DataLayer, w którym będą ich implementacje. (W tym podejściu tylko DataLayer wie o EF.)
Poprzez ViewModele rozumiesz widoki typowane? Czyli te które zawierają np.
ViewModel to klasa zawierająca dane pokazywane użytkownikowi na interfejsie. To powinny być inne klasy niż encje bazodanowe.
I owszem, to są te klasy, które używasz w widokach za pomocą dyrektywy @model
.
skoro w przykładowo startowym projekcie MVC w akcji About z kontrolera Home wysyłamy tak:
retrun View(context.Tabela.ToList();
i jest to "nie poprawnie"?
Bo startowy projekt MVC przedstawia schemat działania frameworka MVC, a nie sensowną architekturę aplikacji.
Generalnie wszystkie tutoriale Microsoftu dotyczące ASP.NET MVC są niezgodne ze wzorcem MVC, bo pokazują logikę biznesową i operacje na źródle danych realizowane przez kontrolery. Tymczasem takie rzeczy powinny być realizowane przez model, a kontrolery powinny jedynie pośredniczyć między żądaniami użytkownika, a modelem. Ich logika jest bardzo prosta, np. decydują który widok wyświetlić, albo którą metodę z modelu wywołać.
Mam jeszcze takie pytanie.
W kontrolerze Home mam akcje About i Index w każdym widoku tej akcji będą wyświetlane inne tabele z tego samego kontekstu.
W związku z tym rozbić to na 2 kontrolery z czego każdy operuje na innej tabeli czy umieścić to w jednym kontrolerze ale wyświetlanie danych wstawić jako partial z innego kontrolera i akcji np.
Trudno powiedzieć, bo za mało szczegółów podałeś. Partiale służą do definiowania wizualnych komponentów, które można używać w kilku miejscach aplikacji. Jeśli nie potrzebujesz takiej możliwości, to chyba nie ma sensu tworzenie partiali. Kontrolery zazwyczaj wiąże się z widokami i akcjami dotyczącymi realizowania jakiegoś jednego przypadku biznesowego, nie jest ważne ile tabel jest do tego potrzebnych.