EntityFramework6 连接mysql数据库(code first模式)
来源:互联网 发布:守望先锋添加数据索引 编辑:程序博客网 时间:2024/05/17 09:31
这是我第一篇技术文章,我是一个懒得动笔的人,不知道能不能坚持下去。
这篇文章是介绍 EntityFramework6 连接mysql数据库(code first模式), 也同时可以连接mariadb, 因为我自己是使用mariadb的。
在网上参考了不少中文的,外文的相关的 EntityFramework6 code first 连接mysql , 很少看到有讲全的或者忽略了一些关键点的, 导致不能成功的,这边我把关键点写下,以便日后自己回顾。
Demo已经上传到github中,可直接下载运行
https://github.com/tangolivesky/MySqlCodeFirstDemo
需要的环境:
1. 安装 MySQL Server 或mariadb Server
2. vs2013
就这两个就够了,不需要安装 MySQL Connectors , 因为很多博文中都写了需要安装这个
一、新建一个类库项目
二、从nuget中直接安装 MySQL.Data.Entities, MySql.Data.Entity 会关联安装上 MYSQL.Data , EntityFramework 这些类库。 (nuget的推出确实方便了我们对于类库的管理,想起以前手动引用dll的日子是多么的艰苦和容易出错)
引用后如下图
三、 然后就可以建一个 DbContext的类了, 很简单的一个类
using System;using System.Collections.Generic;using System.ComponentModel.DataAnnotations;using System.Data.Entity;using System.Linq;using System.Text;using System.Threading.Tasks;namespace MySqlCodeFirstDemo{ public class MySqlContext : DbContext { public DbSet<User> Users { get; set; } } public class User { [Key] public int Id { get; set; } [MaxLength(255)] public string Name { get; set; } public int Age { get; set; } }}
在WebConfig中增加这一段
<connectionStrings> <add name="MySqlContext" providerName="MySql.Data.MySqlClient" connectionString="server=127.0.0.1;port=3306;database=mydb;uid=root;password=123456" /> </connectionStrings>
四,在nuget控制台中运行 Enable-Migrations 成功
在nuget控制台中运行add-migration Initial 失败
提示: No MigrationSqlGenerator found for provider 'MySql.Data.MySqlClient'
原因是mysql 不像sqlserver VS可以自动知道去找MigrationSqlGenerator, 而是需要手动指定,你只需要在Migrations文件夹的Configuration文件中增加这么一段
internal sealed class Configuration : DbMigrationsConfiguration<MySqlCodeFirstDemo.MySqlContext> { public Configuration() { AutomaticMigrationsEnabled = false; // register mysql code generator SetSqlGenerator("MySql.Data.MySqlClient", new MySql.Data.Entity.MySqlMigrationSqlGenerator()); } protected override void Seed(MySqlCodeFirstDemo.MySqlContext context) {这样就Ok了
然后在nuget控制台中运行update-database,看看能不能code first 成功呢,结果还是提示失败
你需要在DbContext中增加这段代码
namespace MySqlCodeFirstDemo{ [DbConfigurationType(typeof(MySql.Data.Entity.MySqlEFConfiguration))] public class MySqlContext : DbContext { public DbSet<User> Users { get; set; } } public class User { [Key] public int Id { get; set; } [MaxLength(255)] public string Name { get; set; }
再运行试试看,是不是成功了呢。
看看数据库中有没有? 果然有了呢。
- EntityFramework6 连接mysql数据库(code first模式)
- EntityFramework 6.0< Code First > 连接 Mysql数据库
- EntityFramework 6.0< Code First > 连接 Mysql数据库
- EF(EntityFramework)使用Code First连接MySQL数据库详解
- EF Code First 连接Mysql
- MVC5+EF+MYSQL(连接):code first
- EF 6.0 Code First 迁移MySql数据库
- 基于现有数据库的Code First模式迁移更新数据库
- EF(EntityFramework)使用Code First连接Oracle数据库详解
- ASP.Net MVC连接MySQL和Code First的使用
- Code First模式初识
- code first数据库迁移
- EF6+MySql code first
- code first 迁移 MySQL
- asp.net mvc Code First模式下迁移更新数据库
- .net code first 改为mysql数据库的步骤
- 使用 Code First 数据库迁移
- Code First 迁移更新数据库
- 线程模型
- [转载]网络原理,以及对VM虚拟网络VMnet0、VMnet1、VMnet8的图解
- Matlab电路问题的仿真
- 以Windows服务方式启动MySQL,并将其默认编码设置为UTF-8
- 计算几何中的精度问题(转)
- EntityFramework6 连接mysql数据库(code first模式)
- 通过用户名字段查询记录中字段判断是否登录
- Environment
- 魔方阵
- MySQL之——CentOS下以RPM方式安装MySQL5.5
- iOS动画:UIView动画和CALayer动画(CABasicAnimation、CAKeyframeAnimation的使用)
- Hive导入10G数据的测试
- oracle中rowid的用法 (全面)
- c多文件编译