博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Mvc5 EF6 CodeFirst Mysql (一) 新建一个Mvc项目并使用EF连接到Mysql数据库
阅读量:6576 次
发布时间:2019-06-24

本文共 3300 字,大约阅读时间需要 11 分钟。

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

  

2.安装Entity Framework

  

 

 

3.安装mysql connector 地址: 

 安装mysql-for-visualstudio 地址: 

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

 

4.在Mvc项目中引用Mysql

 

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<PluralizingTableNameConvention>(); 保证表不带复数

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

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

View Code

 

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

View Code

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

  配置webconfig

View Code

  运行结果:

   

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

  

  

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 的项目就完成了,后面讲介绍如何在开发环境和生产环境修改数据库结构

     

    参考:

     

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

    你可能感兴趣的文章
    Kotlin 知识梳理(1) Kotlin 基础
    查看>>
    js正则表达式
    查看>>
    iOS socket通信,编解码,浮点型数据解析
    查看>>
    四十四、【CardView】
    查看>>
    Spring 定时器的使用---Xml、Annotation、自定义
    查看>>
    5步教你正确挑选一个期权合约!
    查看>>
    手把手教你如何新建scrapy爬虫框架的第一个项目(下)
    查看>>
    前端基础15:JS作用域基础
    查看>>
    Linux系统相关命令
    查看>>
    BATJ面试必会之 Spring 篇(一)
    查看>>
    discuz7.2 ie下弹出窗口出错
    查看>>
    用SOCKS代理实现 F~Q
    查看>>
    Minify实现js和css文件的合并压缩缓存
    查看>>
    WSS3.0 内容数据库迁移始末
    查看>>
    Linux批量重命名
    查看>>
    忘记Win7登录密码的解决办法
    查看>>
    KeyMob开启移动广告聚合的大门
    查看>>
    xhost: unable to open display
    查看>>
    Nat--网络地址转换—静态篇
    查看>>
    使用haproxy-实现七层负载均衡
    查看>>