本文是一个Visual Studio 2015中体验Entity Framework(EF) 6+MySQL+Code First +ASP.NET MVC 5的初步示例教程。
本示例开发环境:
操作系统:Windows 10 专业版
IDE:Visual Studio 2015
程序项目涉及的架构及技术:ASP.NET MVC 5 + Entity Framework(EF) 6+MySQL+Code First
首先,我们创建一个基于C#的ASP.NET MVC 5Web应用程序项目,命名为EfMySqlDemo。由于是示例教程,所以我们把身份验证取消,即不进行身份验证,具体如图示:
创建好的初始项目结构如图示:
接下来,我们通过程序包管理器控制台来安装Entity Framework和MySql.Data.Entity程序集的相关引用
Install-Package MySql.Data.Entity以上的Entity Framework和MySql.Data.Entity程序集安装好之后,我们需要在Web.Config配置文件中新增MySQL的连接字符串connectionStrings:
<connectionStrings> <add name="EFMySqlDemoContext" connectionString="server=localhost;user id=root;password=123456;database=EFMySqlDemo;pooling=false;charset=utf8;Treat Tiny As Boolean=false;Convert Zero Datetime=True;" providerName="MySql.Data.MySqlClient" /> </connectionStrings>其中,连接字符串中的部分参数请根据具体细节配置。 我们先来创建一个名为Blog的实体类:
using System; namespace EfMySqlDemo.Models { public class Blog { public int Id { get; set; } public string Title { get; set; } public string Post { get; set; } public DateTime CreatedOn { get; set; } } }接下来,再创建一个名为EFMySqlDemoContext的连接上下文类,并在类上添加DbConfigurationType属性,如下:
using System.Data.Entity; using MySql.Data.Entity; namespace EfMySqlDemo { [DbConfigurationType(typeof(MySqlEFConfiguration))] public class EFMySqlDemoContext : DbContext { } }在EFMySqlDemoContext这个类中配置连接字符串和数据库表的一些规则以及初始化等,配置后的EFMySqlDemoContext类代码:
using System; using System.Data.Entity; using System.Data.Entity.ModelConfiguration.Conventions; using EfMySqlDemo.Models; using MySql.Data.Entity; namespace EfMySqlDemo { [DbConfigurationType(typeof(MySqlEFConfiguration))] public class EFMySqlDemoContext : DbContext { public EFMySqlDemoContext() : base("EFMySqlDemoContext") { } protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Conventions.Remove<PluralizingTableNameConvention>(); base.OnModelCreating(modelBuilder); } public DbSet<Blog> Blogs { get; set; } } }下面,我们在程序包管理器控制台中使用:Enable-Migrations -verbose 命令来应用Entity Framework的数据迁移功能:
Enable-Migrations -verbose
说明: -verbose参数会在控制台中输入数据迁移的详细信息迁移命令应用成功后,我们可以在解决方案的中看到多出来一个名为Migrations的文件夹,里面包含一个名为Configurations.cs的文件,先不用理会这个cs文件,我们继续使用命令来处理接下来的步骤。接着使用:
Add-Migration InitialDatabase -verbose其中,InitialDatabase是数据迁移的名称,可以任意命名。命令成功运行后,Migrations文件夹中又会自动创建一个以时间戳开始的cs文件,如:201509191423578_InitialDatabase.cs 最后,我们应用Update-Database命令来生成数据库和实体对应的数据表:
Update-Database -verbose命令运行成功后,打开MySQL数据库,我们可以看到,数据库efmysqldemo已成功生成,其中包含了两个表,__migrationhistory和blog。__migrationhistory顾名思义是数据迁移用的迁移历史数据表,这个表记录了我们每次对实体修改后映射到数据表的详细操作,在这里不作过多说明了。另一个表blog则是我们的实体对应生成的表。 到这里,我们Entity Framework在MySQL上的连接,配置和生成数据库及表的操作就基本完成了。 下面,我们来向表中插入测试数据,简单起见,就在HomeController的Index中直接添加插入数据的方法了,具体代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using EfMySqlDemo.Models; namespace EfMySqlDemo.Controllers { public class HomeController : Controller { public ActionResult Index() { var blog1 = new Blog { Id = 1, Title = "ASP.NET MVC 5+Entity Framework(EF) 6+MySQL+Code First示例教程初步(1)", Post = "Entity Framework(EF) 6+MySQL+Code First Post 1", CreatedOn = DateTime.Now }; var blog2 = new Blog { Id = 1, Title = "ASP.NET MVC 5+Entity Framework(EF) 6+MySQL+Code First示例教程初步(2)", Post = "Entity Framework(EF) 6+MySQL+Code First Post 2", CreatedOn = DateTime.Now }; using (var db = new EFMySqlDemoContext()) { db.Blogs.Add(blog1); db.Blogs.Add(blog2); db.SaveChanges(); } return View(); } public ActionResult About() { ViewBag.Message = "Your application description page."; return View(); } public ActionResult Contact() { ViewBag.Message = "Your contact page."; return View(); } } }写好代码后,按F5运行程序。我们再查看blog表,这时blog表里就多了两条我们刚才插入的测试数据: 最后,我们再来查询刚才插入的数据,还是在Index这个Action中来完成示例:
public ActionResult Index() { using (var db = new EFMySqlDemoContext()) { var list = db.Blogs.ToList(); return View(list); } }Index视图HTML页面的代码:
@{ ViewBag.Title = "Home Page"; } <style type="text/css"> .jumbotron h1 { font-size:24px; } </style> <div class="jumbotron"> <h1>Visual Studio 2015体验Entity Framework(EF) 6+MySQL+Code First +ASP.NET MVC 5示例教程初步</h1> <ul> @foreach (var blog in Model) { <li> <h3>标题:@blog.Title</h3> <p>内容:@blog.Post</p> <p>创建于:@blog.CreatedOn</p> </li> } </ul> </div>运行结果如图: 好了,写到这里,关于Visual Studio 2015体验Entity Framework(EF) 6+MySQL+Code First +ASP.NET MVC 5示例教程初步完成了,希望可以对你有帮助。 我把示例的源码放在这里,请点击下载。(请自行使用Nuget还原程序包) 祝学习,工作愉快。 晚了,洗洗睡了。
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册