我正在寻找一种从ms访问导入数据的好方法,并将其绑定到任何MVC模式的模型
这是我们正在考虑的方法
方法1:
>打开Ms Access文件
>打开数据库
>打开所有表
>导入所有表的数据并将其绑定到模型
>关闭所有表
>关闭数据库
>关闭文件
方法2:
>将Ms Access数据库连接到Asp.Net MVC
>打开数据库
>传递查询
获取数据并将其绑定到模型
>关闭数据库
哪种方法更好,怎么实现呢?
解决方法
这两种方法都需要您连接到数据库并将内容映射到模型中.我假设方法1是“当Web应用程序开始连接并将所有数据库内容复制到内存中并且如果从那里访问,而方法2是”当我需要显示一些数据时,连接数据库并复制特定内容到我的模型’.
如果是这种情况,那么建议使用方法2(你已经说过你这样做,所以一切都很好).
你松了所有的[酸] [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>
(我提到不要这样做吗?)