mysql+ef的配置相比较mssql+ef来说复杂一些。我的感受就是配置难度在于插件版本造成的各种不兼容问题。另外参考了很多博客,将多个博客里的经验综合才得以实现,因为不是每个人的操作都和那些博客作者描述的情况一致,不过解决之后其他都好说。现在从零开始操作mysql+CodeFirst的实现,总结我的配置过程。先确保安装并打开了mysql数据库:

1.新建控制台项目

2.在程序包管理器控制台里依次安装(注意:EF版本一定要低,另外第②和第③保证版本一致,因为③和②有依赖关系,版本不一致会导致一些问题)
①Install-Package EntityFramework -Version 6.1.3

②Install-Package MySql.Data -Version 6.8.8

③Install-Package MySql.Data.Entity -Version 6.8.8

3.App.Config配置文件里添加:

<connectionStrings>
<add name="connStr" connectionString="data source=127.0.0.1;user
id=root;password=123456;database=sqltest;" providerName="MySql.Data.MySqlClient" />
</connectionStrings>

4.依次新建Person实体类,PersonConfig类,详细代码:

public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
}
class PersonConfig : EntityTypeConfiguration<Person>
{
public PersonConfig()
{
this.ToTable("T_Persons");
}
}

5.新建MyContext类,详细代码(注意:如果不在类上方做DBConfigurationType标记的话会在最终操作update-database时出错,别忘记)

[DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))]
class MyContext : DbContext
{
public MyContext()
: base("name=connStr")//name对应配置文件里的连接字符串name属性
{ }
public DbSet<Person> Persons { get; set; } protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
modelBuilder.Configurations.AddFromAssembly(Assembly.GetExecutingAssembly());
}
}

6.继续在程序包管理器控制台运行命令Enable-Migrations -force,成功后将会出现如图所示信息:

注意:此时在项目下会自动生成文件夹和一个类,如图所示:

7.打开Configuration.cs,将AutomaticMigrationsEnabled的值修改为true,并且在程序包管理器控制台运行命令update-database -force,成功后将会出现如图所示信息:

注意:没在MyContext类上方标记DBConfigurationType害得我这一步浪费了好几个小时,会提示No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'. Use the SetSqlGenerator method in the target migrations configuration class to register additional SQL generators.

8.现在来测试效果。目前mysql里没有名字叫sqltest的数据库存在,CodeFirst是通过代码来自动生成数据库的。主函数代码如下:

using (MyContext ctx = new MyContext())
{
Person per1 = new Person { Name = "per1", Age = 12 };
Person per2 = new Person { Name = "per2", Age = 17 };
Person per3 = new Person { Name = "per3", Age = 19 };
ctx.Persons.Add(per1);
ctx.Persons.Add(per2);
ctx.Persons.Add(per3);
ctx.SaveChanges();
Console.WriteLine("添加成功");
}
Console.ReadKey();

9.运行后如果成功,刷新Navicat for MySQL的数据库列表可以发现新生成的数据库:

注意:①自动生成了__migrationhistory表说明配置很成功。②PersonConfig.cs里的this.ToTable("T_Persons");影响实体类映射成功后的表名。③默认Id字段为主键并且自增,因此不需要手动为Id属性赋值。

MySQL CodeFirst的配置与注意事项的更多相关文章

  1. Apache,PHP,MySQL,PMA手动配置的注意事项

    注:本文之前发布在自己的QQ空间,复制过来的时候,颜色信息丢失了,回头有空再把颜色重新标上! 前言:LAMP(Linux+Apache+MySQL+PHP)环境是目前开源社区最活跃的开发和运行平台,有 ...

  2. MySQL安装、配置、测试

    MySQL安装.配置.测试(win7_64bit) 目录 1.概述 2.本文用到的工具 3.MySQL安装配置 4.Java访问MySQL测试 5.注事事项 6.相关博文 >>看不清的图片 ...

  3. 阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7)

    阿里云服务器 ECS 部署lamp:centos+apache+mysql+php安装配置方法 (centos7) 1.效果图 1 2. 部署步骤 1 1. mysql安装附加(centos7) 7 ...

  4. mysql 安装与配置、使用

    http://www.cnblogs.com/shenliang123/p/3203546.html CentOs中mysql的安装与配置 在linux中安装数据库首选MySQL,Mysql数据库的第 ...

  5. MYSQL设置远程账户登陆总结,mysql修改、找回密码、增加新用户,MySQL数据库的23个注意事项

    1.5 设置及修改Mysql root用户密码1 设置密码方法mysqladmin -u root password '123456'mysqladmin -u root -p'123456' pas ...

  6. MySQL主从复制的原理和注意事项都在这儿了!!

    写在前面 最近在写Mycat专题,由于不少小伙伴最近要出去面试,问我能不能简单写下MySQL的主从复制原理和注意事项,因为在之前的面试中被问到了这些问题.我:可以啊,安排上了!! 主从复制原理 (1) ...

  7. 将数据从MySQL迁移到Oracle的注意事项

    将数据从MySQL迁移到Oracle的注意事项1.自动增长的数据类型处理MYSQL有自动增长的数据类型,插入记录时不用操作此字段,会自动获得数据值.ORACLE没有自动增长的数据类型,需要建立一个自动 ...

  8. MYSQL多实例配置方法 mysqld_multi方法

    在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi 1.修改my.cnf 如一个定义两个实例的参考配置: [mysqld_ ...

  9. MySQL 安装 + 精简 + 配置

    MySQL 安装 + 精简 + 配置 下载安装 从官网 下载 Community Edition MySQL 5.6 版本 精简 根目录下只留 [data/bin/share] , my-defaul ...

随机推荐

  1. tensorflow2.0学习笔记第一章第三节

    1.3鸢尾花数据读入 # 从sklearn包datasets读入数据 from sklearn import datasets from pandas import DataFrame import ...

  2. yum安装配置MySQL数据库

    1.配置yum源 # 先安装wget yum install wget -y     2.下载mysql源安装包 wget http://dev.mysql.com/get/mysql57-commu ...

  3. zabbix 交换机端口显示端口描述

    ZABBIX 监控系统流量图显示端口描述   进入web 选择配置--主机 选择触发器原型 编辑触发器 随便点开一个触发器 选择触发器原型   逐个点开修改 {#IFDESCR}: ({#IFALIA ...

  4. void out2() const{

    include "stdafx.h" include using namespace std; class aa{ int num; public: aa(){ int b =10 ...

  5. RabbitMQ系列之【CentOS6.5安装RabbitMQ】

    环境准备 操作系统:CentOS 6.5 Final RabbitMQ: 3.1.5 Python: 2.7.11 ErLang: R16B02 安装预环境(少什么安装什么) yum -y insta ...

  6. springboot整合Mybatis(无xml)

    1.pom文件 依赖引入 <parent> <groupId>org.springframework.boot</groupId> <artifactId&g ...

  7. 操作-读取excel

    xlrd 该模块主要用来读取excel 注:sheet表示的是excel的表,就是底下的工作栏 (1) 打开excel文件并获取所有sheet import xlrd # 打开Excel文件读取数据 ...

  8. LaTeX实时预览中文

    参考资料:http://blog.sina.com.cn/s/blog_6ea58f530101aizw.html 功夫不负有心人,终于在经过艰苦卓绝的寻找之后,让我的Texpad实现了实时预览.此时 ...

  9. Spring Cloud 系列之 Dubbo RPC 通信

    Dubbo 介绍 官网:http://dubbo.apache.org/zh-cn/ Github:https://github.com/apache/dubbo 2018 年 2 月 15 日,阿里 ...

  10. [搬运]Intellij IDEA 汉化

    Github地址: https://github.com/pingfangx/TranslatorX