通过EF连接MySql数据库,并启动自动数据迁移

本文详细介绍了如何使用C#与Entity Framework (EF)连接MySql数据库的方法,包括安装所需软件包、配置App.config文件、创建数据库上下文、执行数据迁移等步骤。

1、先安装MySql数据库,最好安装最新版本,因为在通过EF连接MySql数据库的过程中,有些无法解决的问题,在MySql数据库升级到最新版本后就不存在了。

2、在C#项目中的 NuGet包管理器中安装 EntityFramework(6.1.3版本)、MySql.Data(6.9.12版本)、MySql.Data.Entity(6.9.12版本)
在这里插入图片描述

3、添加程序集 System.Data.Entity

4、修改 App.config 文件,将 defaultConnectionFactory 标签改为 Mysql的,插入MySql连接字符串。
在这里插入图片描述

5、在Db类上添加 DbConfigurationType
在这里插入图片描述

6、在程序包管理器控制台中 执行:
Enable-Migrations -ProjectName ConsoleApplication9 -StartUpProjectName ConsoleApplication9 -ContextTypeName LocationHistoryDb -MigrationsDirectory:MySqlMigrations
其中:ConsoleApplication9 是项目名称,LocationHistoryDb是Db类名称 MySqlMigrations是文件生成的文件夹名称

7、项目重新编译

8、在程序包管理器控制台中 执行:
add-migration InitInsert -ProjectName ConsoleApplication9 -StartUpProjectName ConsoleApplication9 -Force -ConfigurationTypeName ConsoleApplication9.MySqlMigrations.Configuration
ConsoleApplication9.MySqlMigrations.Configuration:当前数据迁移用到的 Configuration 类

9、在程序包管理器控制台中 执行:
Update-Database -Verbose -ProjectName ConsoleApplication9 -StartUpProjectName ConsoleApplication9 -ConfigurationTypeName ConsoleApplication9.MySqlMigrations.Configuration

10、在生成的 Configuration 类的构造函数中,如图设置:
AutomaticMigrationDataLossAllowed = true;
AutomaticMigrationsEnabled = true;
在这里插入图片描述

11、在LocationHistoryDb类 OnModelCreating 函数中 添加或修改如下:
Database.SetInitializer(new MigrateDatabaseToLatestVersion<LocationHistoryDb, Configuration>());
在这里插入图片描述

12、项目重新编译

13、在程序包管理器控制台中 执行:
add-migration Init -ProjectName ConsoleApplication9 -StartUpProjectName ConsoleApplication9 -Force -ConfigurationTypeName ConsoleApplication9.MySqlMigrations.Configuration

14、Update-Database -Verbose -ProjectName ConsoleApplication9 -StartUpProjectName ConsoleApplication9 -ConfigurationTypeName ConsoleApplication9.MySqlMigrations.Configuration

15、通过如下调用就可以访问MySql数据库,并且在表结构发生变化时,会自动进行数据迁移
在这里插入图片描述

注意:
1、以上 7-9这三步是用于以下两种情况时,对数据库进行初始化:
(1)MySql中没有 LocationHistoryDb 对应的数据库。
(2)数据库表结构和 LocationHistoryDb中表结构不同,将数据库删除。
2、如果 MySql数据库中有和 LocationHistoryDb 对应的表结构相同的数据库时,7-9这三步可以省略。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值