VS跨数据库Mysql+CodeFisrt模式

自己一个人看了好多文章,开始安装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.

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值