我正在寻找一种从ms访问中导入数据并将其绑定到MVC模式的任何模型的好方法
以下是我们想要遵循的方法
方法1:
方法2:
哪种方法更好,我可以如何实施?
更新 我已经实现了方法2,它的工作正常,有没有人知道如何实现方法1
答案 0 :(得分:1)
这两种方法都要求您连接到数据库并将内容映射到模型中。我假设方法1是'当web应用程序开始连接并将所有数据库内容复制到内存中并从那里访问时'和方法2'是'当我需要显示一些数据时,连接数据库并复制特定内容我的模特'。
如果是这种情况,那么建议采用方法2(你已经说过你已经这样做了,所以一切都很好)。
方法1对于较小的数据库可能正常工作,但是:
如果您尝试接近一个(不推荐,不要这样做,每次运行此代码时小猫都会受到伤害),那么最简单的方法就是在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>
(我提到过不这样做吗?)
答案 1 :(得分:1)
使用Entity Framework.Create ViewModel进行映射。
答案 2 :(得分:0)
你应该做的是根据你的桌子建立你的模型。因此,模型类应具有与表字段对应的属性。然后,当您需要模型时,您将再次查询数据库并相应地填充模型的属性。
答案 3 :(得分:0)
我不理解方法1。
是否需要使用Access?我已经看到基于文件的数据库(例如Access)存在很多问题,所以最好将所有数据从Access导入SQL Server或其他数据库,然后使用选项2.
由于您的数据库已经创建,您可以使用Entity Framework数据库优先方法来绑定它。
答案 4 :(得分:0)
您需要在Header文件中添加使用System.Data.OleDb;
并添加这些 Provider = Microsoft.ACE.OLEDB.12.0; DataSource = | DataDirectory | \ myAccessFile.mdb;
Persist Security Info = False; 连接字符串中的行使用连接字符串获取
使用OleDbCommand,OleDbConnection
和ms-access查询就像sql查询一样