📜  ASP.NET MVC-数据库

📅  最后修改于: 2020-11-21 05:15:54             🧑  作者: Mango


在本教程中创建的所有ASP.NET MVC应用程序中,我们一直在将硬编码数据从Controllers传递到View模板。但是,为了构建真实的Web应用程序,您可能需要使用真实的数据库。在本章中,我们将看到如何使用数据库引擎来存储和检索应用程序所需的数据。

为了存储和检索数据,我们将使用称为Entity Framework的.NET Framework数据访问技术来定义和使用模型。

实体框架(EF)支持代码优先技术,该技术允许您通过编写简单的类来创建模型对象,然后可以从您的类中动态创建数据库,从而实现了非常干净快速的开发工作流程。

让我们看一个简单的示例,在该示例中,我们将在示例中添加对Entity框架的支持。

步骤1-要安装实体框架,请右键单击您的项目,然后选择NuGet软件包管理器→管理用于解决方案的NuGet软件包…

安装实体框架

它将打开NuGet软件包管理器。在搜索框中搜索实体框架。

搜索实体框架

选择实体框架,然后单击“安装”按钮。它将打开“预览”对话框。

选择实体框架

单击确定继续。

许可证接受

单击“我接受”按钮开始安装。

我接受按钮

一旦安装了Entity Framework,您将在窗口外看到消息,如上面的屏幕截图所示。

添加DBContext

我们需要向员工模型添加另一个类,该类将与Entity Framework通信以使用以下代码检索和保存数据。

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Linq;

using System.Web;

namespace MVCSimpleApp.Models{
   public class Employee{
      public int ID { get; set; }
      public string Name { get; set; }
      public DateTime JoiningDate { get; set; }
      public int Age { get; set; }
   }
    
   public class EmpDBContext : DbContext{
      public EmpDBContext()
      { }
      public DbSet Employees { get; set; }
   }
}

如上所示, EmpDBContext是从称为DbContext的EF类派生的。在此类中,我们有一个名为DbSet的属性,该属性基本上表示您要查询和保存的实体。

连接字符串

我们需要在Web.config文件中的数据库的标记下指定连接字符串。


   

您实际上不需要添加EmpDBContext连接字符串。如果未指定连接字符串,则Entity Framework将使用DbContext类的完全限定名称在用户目录中创建localDB数据库。对于此演示,我们不会添加连接字符串以使事情变得简单。

现在,我们需要更新EmployeeController.cs文件,以便实际上可以从数据库保存和检索数据,而不是使用硬编码数据。

首先,我们添加一个私有的EmpDBContext类对象,然后更新Index,Create和Edit操作方法,如下面的代码所示。

using MVCSimpleApp.Models;
using System.Linq;
using System.Web.Mvc;

namespace MVCSimpleApp.Controllers {
   public class EmployeeController : Controller{
      private EmpDBContext db = new EmpDBContext();
      // GET: Employee
        
      public ActionResult Index(){
         var employees = from e in db.Employees
         orderby e.ID
         select e;
         return View(employees);
      }
        
      // GET: Employee/Create
      public ActionResult Create(){
         return View();
      }
        
      // POST: Employee/Create
      [HttpPost]
      public ActionResult Create(Employee emp){
         try{
            db.Employees.Add(emp);
            db.SaveChanges();
            return RedirectToAction("Index");
         }catch{
            return View();
         }
      }
        
      // GET: Employee/Edit/5
      public ActionResult Edit(int id){
         var employee = db.Employees.Single(m => m.ID == id);
         return View(employee);
      }
        
      // POST: Employee/Edit/5
      [HttpPost]
      public ActionResult Edit(int id, FormCollection collection){
         try{
            var employee = db.Employees.Single(m => m.ID == id);
            if (TryUpdateModel(employee)){
               //To Do:- database code
               db.SaveChanges();
               return RedirectToAction("Index");
            }
            return View(employee);
         }catch{
            return View();
         }
      }
   }
}

然后,我们使用以下URL http:// localhost:63004 / Employee运行此应用程序。您将看到以下输出。

姓名加入日期年龄

如您所见,视图上没有数据,这是因为我们没有在数据库中添加任何记录,该记录是由Visual Studio创建的。

让我们转到SQL Server Object Explorer,您将看到数据库的创建与我们在DBContext类中使用的名称相同。

DBContext类

让我们扩展该数据库,您将看到它有一个表,其中包含我们的Employee模型类中的所有字段。

员工模型班

要查看此表中的数据,请右键单击“雇员”表,然后选择“查看数据”。

员工表视图数据

您将看到我们目前没有记录。

没有记录的时刻

让我们直接在数据库中添加一些记录,如以下屏幕截图所示。

在数据库中添加记录

刷新浏览器,您将看到数据现在已从数据库更新到视图。

更新的视图

通过单击“新建”链接,从浏览器添加一条记录。它将显示创建视图。

建立检视

让我们在以下字段中添加一些数据。

添加一些数据

单击创建按钮,它将更新索引视图,并将此新记录添加到数据库中。

新记录数据库

现在,我们去SQL Server对象资源管理器并刷新数据库。右键单击雇员表,然后选择查看数据菜单选项。您将看到该记录已添加到数据库中。

记录已添加到数据库