MySQL 如何在ASP.NET MVC 4中使用EF5访问MySQL数据库
MySQL是一款开源的关系型数据库管理系统,而ASP.NET MVC 4是一个Web应用程序开发框架。EF5是一个访问数据库的技术,可以简化与数据库的交互。这篇文章将介绍如何在ASP.NET MVC 4中使用EF5访问MySQL数据库。
阅读更多:MySQL 教程
安装MySQL数据库
首先,我们需要安装MySQL数据库。MySQL是一款免费开源的数据库软件,可以从官方网站上下载最新版本的MySQL。
安装MySQL后,我们需要创建一个数据库。可以使用MySQL Workbench来创建和管理数据库。在这里,我们创建一个名为test
的数据库。
在test
数据库中,我们创建一张名为person
的表,表中包含id
、name
和age
三个字段,其中id
是自增的。
创建ASP.Net MVC 4项目
在Visual Studio中,选择“新建项目”,选择“ASP.Net MVC 4 Web应用程序”。选择一个命名空间和项目名称,单击“确定”按钮来创建项目。
在创建项目时,可以选择使用Razor视图引擎。在这里,我们将使用Razor视图引擎。
安装MySQL连接器
接下来,我们需要安装MySQL连接器。MySQL Connector/NET是.NET应用程序访问MySQL数据库时必须的驱动程序。
可以通过NuGet包管理器安装MySQL Connector/NET。在Visual Studio中,打开“工具”菜单,选择“NuGet包管理器”,然后选择“管理解决方案的NuGet程序包”。
在搜索框中输入“MySQL Connector”,然后找到“MySQL Connector/NET 8.0.22”进行安装。
配置Web.config文件
我们已经安装MySQL数据库和MySQL Connector/NET,现在需要在Web.config文件中配置数据库连接字符串。找到并打开Web.config文件,添加以下代码:
<connectionStrings>
<add name="MySQLContext" connectionString="server=localhost;user id=root;password=root;database=test" providerName="MySql.Data.MySqlClient" />
</connectionStrings>
在上述代码中,name
表示连接字符串的名称,connectionString
表示连接字符串,其中server=localhost表示数据库服务器所在位置,user id是数据库账号,password是数据库账号对应的密码,database是要进行数据库操作的库名,providerName表示使用的是MySQL连接器。
创建数据模型
在这一步中,我们需要创建一个用于访问数据库的数据模型。在Solution Explorer中,右键单击项目名称,选择“添加 -> 新建项”,选择“类”,命名为Person.cs
,然后添加以下代码:
namespace MySQL_Demo.Models
{
public class Person
{
public int id { get; set; }
public string name { get; set; }
public int age { get; set; }
}
}
在上述代码中,我们定义了一个Person
类,该类包含id
、name
和age
三个属性。这些属性将映射到我们之前创建的person
表中的相应字段。
创建数据访问类
在这一步中,我们需要创建一个用于访问数据库的数据访问类。在Solution Explorer中,右键单击项目名称,选择“添加 -> 新建项”,选择“类”,命名为MySQLContext.cs
,然后添加以下代码:
using System.Data.Entity;
namespace MySQL_Demo.Models
{
public class MySQLContext : DbContext
{
public MySQLContext() : base("MySQLContext") { }
public DbSet<Person> Persons { get; set; }
}
}
在以上代码中,我们定义了一个继承了DbContext
的MySQLContext
类。在构造函数中,我们将读取之前的Web.config文件中定义的连接字符串。然后,我们定义了一个名为Persons
的属性,该属性是Person
类的DbSet
类型,表示该属性将映射到我们之前创建的person
表中。
Controller
在这一步中,我们将创建一个控制器,用于管理我们的数据模型。
在Solution Explorer中,右键单击Controllers
文件夹,选择“添加 -> 控制器”,选择“MVC5 Controller – Empty”,并将其命名为PersonController
。单击“添加”按钮。
在PersonController.cs
文件中添加以下代码:
using System.Linq;
using System.Web.Mvc;
using MySQL_Demo.Models;
namespace MySQL_Demo.Controllers
{
public class PersonController : Controller
{
MySQLContext db = new MySQLContext();
// GET: Person
public ActionResult Index()
{
var persons = db.Persons.ToList();
return View(persons);
}
// GET: Person/Details/5
public ActionResult Details(int id)
{
var person = db.Persons.FirstOrDefault(p => p.id == id);
return View(person);
}
// GET: Person/Create
public ActionResult Create()
{
return View();
}
// POST: Person/Create
[HttpPost]
public ActionResult Create(Person person)
{
try
{
db.Persons.Add(person);
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View(person);
}
}
// GET: Person/Edit/5
public ActionResult Edit(int id)
{
var person = db.Persons.FirstOrDefault(p => p.id == id);
return View(person);
}
// POST: Person/Edit/5
[HttpPost]
public ActionResult Edit(Person person)
{
try
{
db.Entry(person).State = System.Data.Entity.EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View(person);
}
}
// GET: Person/Delete/5
public ActionResult Delete(int id)
{
var person = db.Persons.FirstOrDefault(p => p.id == id);
return View(person);
}
// POST: Person/Delete/5
[HttpPost]
public ActionResult Delete(Person person)
{
try
{
db.Entry(person).State = System.Data.Entity.EntityState.Deleted;
db.SaveChanges();
return RedirectToAction("Index");
}
catch
{
return View(person);
}
}
}
}
在上述代码中,我们引用了MySQL_Demo.Models
下的MySQLContext
和Person
类。在控制器类中,Index
方法用于获取数据库中所有的Person
记录,将其传递给Index.cshtml
视图进行显示。
其他方法分别用于创建、编辑、删除和查看记录。
视图
在这一步中,我们将创建用于显示数据的视图。在Solution Explorer中,右键单击Views
文件夹,选择“添加 -> 视图”,命名为Index.cshtml
,并添加以下代码:
@model List<MySQL_Demo.Models.Person>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
<p>
@Html.ActionLink("CreateNew", "Create")
</p>
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.id)
</th>
<th>
@Html.DisplayNameFor(model => model.name)
</th>
<th>
@Html.DisplayNameFor(model => model.age)
</th>
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.id)
</td>
<td>
@Html.DisplayFor(modelItem => item.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.age)
</td>
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.id }) |
@Html.ActionLink("Details", "Details", new { id = item.id }) |
@Html.ActionLink("Delete", "Delete", new { id = item.id })
</td>
</tr>
}
</table>
在上述代码中,我们使用Razor视图引擎创建了一个简单的表格,以显示我们从数据库中查询到的所有Person
记录。
其他视图的代码类似,不再赘述。
运行项目
现在,我们已经完成了使用ASP.NET MVC 4和EF5访问MySQL数据库的应用程序的所有必要步骤。接下来,我们需要在Visual Studio中启动调试,并在浏览器中打开应用程序页面。
在应用程序中,可以添加、编辑、删除和查看Person
记录。所有数据都将保存到我们之前创建的test
数据库中的person
表中。
总结
本文介绍了如何在ASP.NET MVC 4中使用EF5访问MySQL数据库。我们通过安装MySQL数据库和Connector/NET连接器来创建数据库,然后创建了一个用于访问数据库的数据模型和数据访问类。最后,我们创建了一个用于管理数据的控制器和视图。