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这三步可以省略。