📅  最后修改于: 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,您将在窗口外看到消息,如上面的屏幕截图所示。
我们需要向员工模型添加另一个类,该类将与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类中使用的名称相同。
让我们扩展该数据库,您将看到它有一个表,其中包含我们的Employee模型类中的所有字段。
要查看此表中的数据,请右键单击“雇员”表,然后选择“查看数据”。
您将看到我们目前没有记录。
让我们直接在数据库中添加一些记录,如以下屏幕截图所示。
刷新浏览器,您将看到数据现在已从数据库更新到视图。
通过单击“新建”链接,从浏览器添加一条记录。它将显示创建视图。
让我们在以下字段中添加一些数据。
单击创建按钮,它将更新索引视图,并将此新记录添加到数据库中。
现在,我们去SQL Server对象资源管理器并刷新数据库。右键单击雇员表,然后选择查看数据菜单选项。您将看到该记录已添加到数据库中。