Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库

1.新建Mvc5项目,更改身份验证为:不进行身份验证,由于使用到webapi,勾选webapi选项

Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第1张图片

Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第2张图片

  

2.安装Entity Framework

  Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第3张图片

 

 

3.安装mysql connector 地址:http://dev.mysql.com/downloads/connector/net/ 

 安装mysql-for-visualstudio 地址: http://dev.mysql.com/downloads/windows/visualstudio/

 这样可以在vs的 服务器资源管理器中直接添加MysqlDatabase的连接

 

4.在Mvc项目中引用Mysql

Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第4张图片

 

5.在models文件夹下新建3个model :Course、Enrollment、Student

  public class Course
    {
        [DatabaseGenerated(DatabaseGeneratedOption.None)]

        public int CourseID { get; set; }

        public string Title { get; set; }

        public int Credits { get; set; }


        public virtual ICollection Enrollments { get; set; }

    }
View Code
   public enum Grade
   {
        A, B, C, D, F
    }

    public class Enrollment
    {
        public int EnrollmentID { get; set; }

        public int CourseID { get; set; }

        public int StudentID { get; set; }

        public Grade? Grade { get; set; }

        public virtual Course Course { get; set; }

        public virtual Student Student { get; set; }
    }
View Code
   public class Student
  {
       public int ID { get; set; }

       public string LastName { get; set; }

       public string FirstMidName { get; set; }

       public DateTime EnrollmentDate { get; set; }

       public virtual ICollection Enrollments { get; set; }
   }
View Code

 

6.创建数据上下文:新建文件夹DAL,添加类:DemoDbContext

 [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
    public class DemoDbContext : DbContext
    {
        static DemoDbContext()
        {
            Database.SetInitializer(new DropCreateDatabaseIfModelChanges());
        }

        public DemoDbContext() : base("EFContext") { }

        public DbSet Students { get; set; }

        public DbSet Enrollments { get; set; }

        public DbSet Courses { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            modelBuilder.Conventions.Remove();
        }
    }
View Code

  [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] 如果去掉这一句,EF自动创建数据库时会报错,而此时创建控制器又会报错,所以创建控制器的时候注销这句就可以了

  modelBuilder.Conventions.Remove(); 保证表不带复数

  Database.SetInitializer(new DropCreateDatabaseIfModelChanges()); 当数据库发生变化时,能够重新建库,需要注意的是测试数据会全部被删除,所以只能用开发环境

  构造函数数中的DbConnectionString 是存在webconfig中的数据库连接字符串


  "EFContext" connectionString="server=192.168.0.183;user id=root;password=w123456;persistsecurityinfo=True;database=MvcDemo" providerName="MySql.Data.MySqlClient" />
View Code

 

7.开发环境中,如果数据结构发生变化,需要重新建库,每次建库后要重新插入测试数据,可以用DropCreateDatabaseIfModelChanges类来实现(生成环境中请使用 Migrations做数据迁移),在DAL文件夹中新建类:DbInitializer


    
      "MvcDemo.DAL.DemoDbContext,MvcDemo" disableDatabaseInitialization="true">
        "MvcDemo.DAL.DbInitializer,MvcDemo">
      
    
    "System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    
      "System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    "MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      
  
View Code

  disableDatabaseInitialization="true" 可以禁用数据初始化

  配置webconfig

 
    
      "MvcDemo.DAL.DemoDbContext,MvcDemo">
        "MvcDemo.DAL.DbInitializer,MvcDemo">
      
    
    "System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
    
      "System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    "MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.8.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      
  
View Code

  运行结果:

   Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第5张图片

8.添加一个StudentController,先生成一次项目,然后添加控制器

  Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第6张图片

  Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库_第7张图片

9.在_layout.cshtml添加链接

  
  • @Html.ActionLink("学生", "Index", "Student")
  • @Html.ActionLink("教师", "Index", "Course")
  • @Html.ActionLink("课程", "Index", "Instructor")
  • @Html.ActionLink("部门", "Index", "Department")
  • View Code

     

    至此一个简单MVC EF Codefirst 访问Mysql 的项目就完成了,后面讲介绍如何在开发环境和生产环境修改数据库结构

     

    参考:

    使用MVC5的EF6 Code First入门系列:建立一个EF数据模型

    Win10+VS2015+EF6.0+MySQL5.6+MVC环境部署和排错

     

    转载于:https://www.cnblogs.com/speedeve/p/5378695.html

    你可能感兴趣的:(Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库)