Ответ 1
Оба подхода потребуют от вас подключения к базе данных и отображения содержимого в вашу модель. Я предполагаю, что подход 1 - это "когда веб-приложение начинает подключаться и копировать все содержимое базы данных в память и получать доступ, если оттуда", а подход "2" - "когда мне нужно отобразить некоторые данные, подключить базу данных и скопировать конкретное содержимое к моей модели".
Если это так, то рекомендуется подход 2 (и вы заявили, что сделали это, так что все хорошо).
Подход 1 может работать ok-ish для баз данных меньшего размера, но:
- Вы потеряете все [кислотные] [1] - доброту, предоставляемую вашей базой данных
- Застрял с глобальными переменными коллекции - не самая любимая концепция в веб-приложениях.
- В памяти нет необходимости в полной базе данных. Ваша медленная точка в веб-приложениях обычно является сетью, за несколько миллисекунд для загрузки данных, когда это необходимо, ничто по сравнению с тем временем, когда ваш html достигает браузера.
Если вы попытаетесь приблизиться к одному (не рекомендуется, не делайте этого, котенок получает вред при каждом запуске этого кода), то самым простым способом было бы иметь что-то подобное в файле 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
}
Затем в ваших контроллерах:
public ActionResult Index()
{
return View(MvcApplication.globalTable1);
}
И ваше мнение:
@model List<MvcApplication1.MvcApplication.MyTable1>
@{
ViewBag.Title = "Index";
}
<h2>Blah</h2>
<ul>
@foreach (var i in Model) {
<li>@i.idField - @i.contentField </li>
}
</ul>
(Я не упоминал об этом?)