14

我正在寻找一种从 ms 访问导入数据并将其绑定到 MVC 模式的任何模型的好方法


这是我们正在考虑遵循的方法

方法1:

  • 打开女士访问文件
  • 打开数据库
  • 打开所有表
  • 导入所有表的数据并将它们绑定到模型
  • 关闭所有表
  • 关闭数据库
  • 关闭文件

方法2:

  • 在 Asp.Net MVC 中连接 Ms Access 数据库
  • 打开数据库
  • 通过查询
  • 获取数据并将其绑定到模型
  • 关闭数据库

哪种方法更好,我该如何实施?

更新: 我已经实现了方法 2,它的工作正常,有谁知道如何实现方法 1

4

5 回答 5

1

这两种方法都需要您连接到数据库并将内容映射到模型中。我假设方法 1 是“当网络应用程序开始连接并将所有数据库内容复制到内存中并从那里访问”,方法 2 是“当我需要显示一些数据时,连接数据库并复制特定内容到我的模型'。

如果是这种情况,那么建议使用方法 2(并且您已经声明您已经这样做了,所以一切都很好)。

方法 1 可能适用于较小的数据库,但是:

  • 您失去了数据库提供的所有 [acid][1]-y 优点
  • 你被全局集合变量困住了——这不是网络应用程序中最受欢迎的概念
  • 您在内存中不必要地拥有整个数据库。您在网络应用程序中的慢点通常是网络,与您的 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>

(我有没有提到不要这样做?)

于 2013-12-09T03:53:58.040 回答
1

使用 Entity Framework.Create ViewModel 进行映射。

于 2015-02-01T21:23:13.880 回答
0

您需要使用 System.Data.OleDb 添加;在头文件中并添加这些 Provider=Microsoft.ACE.OLEDB.12.0;DataSource=|DataDirectory|\myAccessFile.mdb; 持久安全信息=假;连接字符串中的行使用连接字符串获取
更新 ms-access 数据库使用 OleDbCommand , OleDbConnection

和 ms-access 查询就像 sql 查询

于 2015-02-14T16:21:32.453 回答
0

您应该做的是根据您的表格构建模型。因此模型类应该具有与您的表字段相对应的属性。然后,当您需要模型时,您将再次查询数据库并相应地填充模型的属性。

于 2013-06-11T09:39:18.150 回答
0

我不明白方法1。

是否需要使用 Access?我已经看到基于文件的数据库(例如 Access)存在很多问题,因此最好将所有数据从 Access 导入 SQL Server 或其他数据库,然后使用选项 2。

由于您的数据库已经创建,您可以使用实体框架数据库优先方法来绑定它。

于 2015-01-07T16:44:37.477 回答