自己一个人看了好多文章,开始安装mysql的时候各种报错,各种不对和问题,所以写个blog,简单整理一下,关于mysql数据库安装已经有很多的文章了,所以就不说了,下面只简单说了一下环境变量配置和安装工具

系统:win10

工具:
    visual studio 2013
    mysql5.6 winx64      -----8.0以上各种脑残问题,还是原来的好
    mysql-connector-net-6.8.1   ---最好不高于6.8.3
    mysql-for-visualstudio-1.2.3   ---推荐
    注意安装顺序和版本,非常重要

Mysql 图形用户界面(GUI):
    Navicat for MySQL,也可以选择其他轻量型GUI

安装完成以上工具,完成mysql环境变量配置mysql,安装默认路径:C:\Program Files\MySQL,例如:C:\Program Files\MySQL\MySQL Server 5.6\bin

在系统变量中新建系统变量,变量名:HOME,值:C:\Program Files\MySQL\MySQL Server 5.6\bin

保存,然后同样也是系统变量中双击Path编辑,添加%MYSQL_HOME%\bin,保存退出

 

下面是C#代码

  • 使用之前启用mysql数据库,使用命令行(管理员权限):net start mysql80  其中mysql80为mysql的服务名,安装的时候记下来
  • 因为用的是控制台程序,所以在App.config文件中connectionStrings节点添加连接mysql的字符串,其中CodeFirstDemo这个数据库在mysql中没有。
  • 使用CodeFirst模式,只创建了一张简单的表,并没有创建多表关联,多表关联可以参考EF中的实体来做。
  • config文件中的Configuration节点下的连接字符串配置:
<add name="DataModelContainer" connectionString="server=localhost;user id=root;password=123456;database=CodeFirstDemo;charset=utf8;" providerName="MySql.Data.MySqlClient" />
  • 创建一个UserInfo类,Key这个特性在System.ComponentModel.DataAnnotations命名空间中,相当于主键的意思,代码:
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _CodeFirstDemo
{
    public class UserInfo
    {
        public UserInfo()
        {
            
        }
        [Key]//主键
        public int Id { get; set; }
        public string SName { get; set; }
        public int Age { get; set; }
        public string Email { get; set; }
    }
}
  • 创建一个类,继承DbContext,命名空间:System.Data.Entity,可以直接创建连接Mysql的ADO.NET实体数据模型就不用另外添加引用了,代码:
using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.Data.Entity.Infrastructure;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _CodeFirstDemo
{
    public partial class CodeFirstDBTest : DbContext
    {
        public CodeFirstDBTest()
            : base("name=DataModelContainer")//指向连接字符串
        {
        }
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            
        }
        public DbSet<UserInfo> UserInfo { get; set; }
    }
}
  • 在Program.cs中使用,代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _CodeFirstDemo
{
    class Program
    {
        static void Main(string[] args)
        {
            CodeFirstDBTest dbContext = new CodeFirstDBTest();
            dbContext.Database.CreateIfNotExists();//如果数据库不存在,则创建数据库

            UserInfo userInfo = new UserInfo();//创建一个Model
            userInfo.SName = "wao";
            userInfo.Age = 10;
            userInfo.Email = "asdf";

            dbContext.UserInfo.Add(userInfo);//将Model添加到数据库中
            dbContext.SaveChanges();//保存状态

            Console.WriteLine("OK");
            Console.ReadKey();
        }
    }
}

到这儿基本就已经完成,可以打开Mysql管理工具查看了,mysql怎样连接就不说了,其中,NET Framework框架为4.5

参考的文章:

您的项目引用了最新实体框架;但是,找不到数据链接所需的与版本兼容的实体框架数据库 EF6使用Mysql的技巧

Unable to connect to any of the specified MySQL hosts.