zoukankan      html  css  js  c++  java
  • VS Code First使用Mysql数据库详解

    最近电脑出毛病了,自己装显卡驱动给装死了开不了机,自己研究了两天也没解决,只有去修电脑的找专业人员,说起来惭愧,虽然自己是搞计算机的可电脑自己重装系统都还搞不定。重装系统又清理灰尘花了50大洋,现在用着感觉开机都快了好多。关于VS使用Mysql数据库原本上周就打算写一博客,一直拖到现在。

    一、Mysql的安装

    首先肯定是安装VS,这都不必再说的。其次是下载Mysql,网址http://dev.mysql.com/downloads/installer/

    打开会看到下面的两行

    If you have an online connection while running the MySQL Installer, choose the mysql-installer-web-community file.
    If you do NOT have an online connection while running the MySQL Installer, choose the mysql-installer-community file.

    以我4级差一分的英文水平来翻译一下就是如果联网安装可以下载mysql-installer-web-community,不是则下载mysql-installer-community 

    下载安装之后会出现下面的页面

    这里我是通过自定义选择的,上面我选择了3个文件,第一个是Mysql数据库,第二个算是mysql给VS提供的操作工具,第三个就是Mysql的客户端,可以可视化的操作数据库。这里要说下Mysql Connectors,如果使用类似ado.net的方式可以直接安装Connectors就可以。下载之后一次下一步安装,然后配置。

    二、VS Code First使用Mysql

    1.上面安装Mysql for vs之后就会在vs新建项时出现下面的内容,如果不安装是不会出现的。

    2.类库的引入

    EF框架操作Mysql数据库需要通过NuGet引入MySql.Data.Entity.EF6

    引入之后会出现两个dll引用,下图的EF引用是在添加实体ADO.Net实体数据模型时自动添加的。

    3.配置文件

    光引入这些还不够,还有修改配置文件,因为默认的是sql server数据库,所以需要修改配置文件。将系统生成的配置文件修改为下面的内容。这里注意引用的版本号

    <?xml version="1.0" encoding="utf-8"?>
    <!--注意:此项目为动态库,所以此配置文件内容仅供作为范本使用,实际的WPF或ASP.NET项目可从此文件复制配置内容进行修改-->
    <configuration>
      <configSections>
        <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
        <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
      </configSections>
      <entityFramework codeConfigurationType="MySql.Data.Entity.MySqlEFConfiguration, MySql.Data.Entity.EF6">
        <defaultConnectionFactory type="MySql.Data.Entity.MySqlConnectionFactory, MySql.Data.Entity.EF6">
          <parameters>
            <parameter value="v11.0" />
          </parameters>
        </defaultConnectionFactory>
        <providers>
          <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.Entity.EF6, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
        </providers>
      </entityFramework>
      <connectionStrings>
        <add name="TestContext" connectionString="Data Source=localhost;port=3306;Initial Catalog=TestContext;user id=admin;password=123456;" providerName="MySql.Data.MySqlClient" />
      </connectionStrings>
      <system.data>
        <DbProviderFactories>
          <remove invariant="MySql.Data.MySqlClient" />
          <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.9.9.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
        </DbProviderFactories>
      </system.data>
    </configuration>

    4.应用

    下面是我为这个做了一个简单的demo。首先是新建了一个window控制台应用程序,然后添加ADO.NET实体数据模型的空的Code First。然后在数据库上下文中增加实体User。同时设置连接字符串是TestContext。

    namespace EFMysql
    {
        using System;
        using System.Data.Entity;
        using System.Linq;
    
        public class TestContext : DbContext
        {
    
            public TestContext()
                : base("name=TestContext")
            {
    
            }
            public virtual DbSet<User> Users { get; set; }
        }
    
    
    }
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace EFMysql
    {
        public class User
        {
            [Key]
            public int UserId { get; set; }
    
            public string Name { get; set; }
        }
    }

    在控制台中连接数据库新增一个User实体对象。

            static void Main(string[] args)
            {
                using (var db = new TestContext())
                {
                    User user = new User() { Name = "Test" };
                    db.Users.Add(user);
                    db.SaveChanges();
                    Console.WriteLine("OK");
                }
                Console.ReadLine();
            }

    上面要注意的是Console.ReadLine();不能写在using里面,不然就一闪而过。下面是输出的OK,然后查看Mysql服务可以发现有一个名TestContext的数据库

  • 相关阅读:
    python正则表达式(+ {})(二)
    14丨 HTTP有哪些优点?又有哪些缺点?
    python正则表达式(. *)(一)
    12丨响应状态码该怎么用?
    Fiddler—Fiddler+willow插件应用(十四)
    11丨你能写出正确的网址吗?
    【洛谷P1858】多人背包
    【洛谷P3387】(模板)缩点
    【洛谷P2184】贪婪大陆
    Leetcode: 39. Combination Sum
  • 原文地址:https://www.cnblogs.com/5ishare/p/6115110.html
Copyright © 2011-2022 走看看