C# VS2022 EF6 + Mysql8.0.31 CodeFirsts使用配置

news2025/4/17 21:53:06

文章目录

  • 环境
    • 安装Mysql8.0.31
    • 下载Mysql连接器Net版本
    • 安装VS2022
    • 创建工程
    • 添加Nuget包
    • 修改配置文件如下
    • 准备工作,创建一个Dbcontext类,代码如下
    • 打开程序包控制台输入命令
      • 第一步
      • 第二步
      • 第三步
      • 第四步
  • 简要介绍一下如何添加一个表
    • 思路
    • 添加User实体类
    • 修改dbcontext

环境

安装Mysql8.0.31

下载Mysql连接器Net版本

地址:
https://dev.mysql.com/downloads/connector/net/
下载后 一直下一步安装即可

安装VS2022

创建工程

  • 项目名称
    • 随意,我这取名 EF6ForMysql
  • 项目版本
    • .netframework 4.8
    • 其实core更简单,但是显示情况要求必须这样,所以才费劲搞了一下ef6

效果如下
在这里插入图片描述

添加Nuget包

不赘述了,直接上package文件

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="EntityFramework" version="6.4.4" targetFramework="net48" />
  <package id="Google.Protobuf" version="3.19.4" targetFramework="net48" />
  <package id="K4os.Compression.LZ4" version="1.2.6" targetFramework="net48" />
  <package id="K4os.Compression.LZ4.Streams" version="1.2.6" targetFramework="net48" />
  <package id="K4os.Hash.xxHash" version="1.0.6" targetFramework="net48" />
  <package id="MySql.Data" version="8.0.31" targetFramework="net48" />
  <package id="MySql.Data.EntityFramework" version="8.0.31" targetFramework="net48" />
  <package id="Portable.BouncyCastle" version="1.9.0" targetFramework="net48" />
  <package id="System.Buffers" version="4.5.1" targetFramework="net48" />
  <package id="System.Memory" version="4.5.4" targetFramework="net48" />
  <package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net48" />
  <package id="System.Runtime.CompilerServices.Unsafe" version="5.0.0" targetFramework="net48" />
</packages>

修改配置文件如下

<?xml version="1.0" encoding="utf-8"?>
<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>
  <connectionStrings>
   <!--这里需要注意,DataSource 不要用 . ,因为“.”是sqlserver使用的-->
    <add name="default" connectionString="Data Source=localhost;Initial Catalog=你的库名;user id=你的数据库账户;password=你的数据库登录密码;" providerName="MySql.Data.MySqlClient" />
  </connectionStrings>
  <entityFramework>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
      <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework, Version=8.0.31.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d">
      </provider>
    </providers>
  </entityFramework>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="5.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

==注意连接字符串,服务地址可以用localhost,但是不能用 “.” ==

准备工作,创建一个Dbcontext类,代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Configuration;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF6ForMysql
{
    public class MyDbContext : DbContext
    { 
        public MyDbContext() : base("default")
        {
        }
    } 
}

打开程序包控制台输入命令

第一步

Enable-Migrations

在这里插入图片描述

第二步

找到下面这个文件,修改sql生成器
在这里插入图片描述
代码做如下修改

namespace EF6ForMysql.Migrations
{
    using MySql.Data.EntityFramework;
    using System;
    using System.Data.Entity;
    using System.Data.Entity.Migrations;
    using System.Linq;

    internal sealed class Configuration : DbMigrationsConfiguration<EF6ForMysql.MyDbContext>
    {
        public Configuration()
        {
            AutomaticMigrationsEnabled = false;
            //添加这行代码
            SetSqlGenerator("MySql.Data.MySqlClient", new MySqlMigrationSqlGenerator());//设置Sql生成器为Mysql的
        }

        protected override void Seed(EF6ForMysql.MyDbContext context)
        {
            //  This method will be called after migrating to the latest version.

            //  You can use the DbSet<T>.AddOrUpdate() helper extension method
            //  to avoid creating duplicate seed data.
        }
    }
}

注意是添加 SetSqlGenerator("MySql.Data.MySqlClient", new MySqlMigrationSqlGenerator());//设置Sql生成器为Mysql的代码

第三步

在程序包控制台输入如下代码

Add-Migration Init

效果如下
在这里插入图片描述

第四步

迁移数据库,输入如下命令

Update-Database

在这里插入图片描述

到此codefirst的配置完成

简要介绍一下如何添加一个表

思路

添加一个实体到dbcontext中,通过重复执行如上的 第三步第四步,实现添加一个表到数据库

添加User实体类

 public class User
    {
        [Key]
        public string Id { get; set; }

        [MaxLength(100)]
        public string Name { get; set; }
    }

修改dbcontext

代码如下

using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Configuration;
using System.Data.Entity;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EF6ForMysql
{
    public class MyDbContext : DbContext
    {
       // 添加一个DbSet,这个就会增加一个表
        public DbSet<User> Users { get; set; }
        public MyDbContext() : base("default")
        {
        }
    } 
}

到此结束,关于EF的使用和一下特性,参考msdn的学习文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5409.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

NodeMcu arduino ESP8266 搭建mqtt服务(然也物联)以及使用

NodeMcu arduino ESP8266 搭建mqtt服务以及使用 本文章学习借鉴于太极创客团队&#xff0c;以表感谢。官网http://www.taichi-maker.com/ 操作步骤&#xff1a;我们注册然也物联平台&#xff0c;申请社区版本&#xff0c;进行测试。 文章目录NodeMcu arduino ESP8266 搭建mqtt…

【Python基础篇021】黏包现象丨udp的socket服务

&#x1f320;前言 基于udp的socket服务有什么特点&#xff1f;黏包现象是什么&#xff1f;又是如何产生的&#xff1f;udp和tcp哪种会有黏包现象&#xff1f;看完这篇文章相信你会有所收获。 目录 &#x1f320;一、基于udp的socket服务 &#x1f320;二、TCP中的黏包现象 …

保边滤波之引导滤波与领域转换滤波

&#xff08;1&#xff09;引导滤波 局部窗口内输出图像O和引导图像G成线性关系OiakGibk, ∀i∈Ωk 假设输出图像O和输入图像I之间的关系为OiIi−ni&#xff0c;噪声最小即最小化ni&#xff0c;即 每个像素点i包含于多个窗口Ωk&#xff0c;每个窗口都会得到一个a、b值&#…

RK3399平台开发系列讲解(I/O篇)Linux最大文件数的限制机制

平台内核版本安卓版本RK3399Linux4.4Android7.1🚀返回专栏总目录 文章目录 一、Linux最大文件数的限制机制1.1、申请fd过程分析1.2、申请file内核对象过程分析沉淀、分享、成长,让自己和他人都能有所收获!😄 📢在Linux上能打开多少个文件,有两种限制: 第一种:进程级…

十、组件(8)

本章概要 递归组件异步更新队列Teleport 10.11.2 递归组件 组件可以在自己的模板中递归调用自身&#xff0c;但这需要使用 name 选项为组件指定一个内部调用的名称。 当调用 Vue.createApp({}).component({})全局注册组件时&#xff0c;这个全局的 ID 会自动设置为该组件的n…

【云原生】Docker的基本使用方法与优势

&#x1f36c;Docker的基本使用方法和优势&#x1f959;一、简介&#x1f96a;二、优势&#x1f32e;三、基本使用&#x1f959;一、简介 Docker是基于Go语言实现的开源应用容器引擎&#xff0c;通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的应…

配置Mysql与注册登录模块

后端职责可以粗浅的理解为处理各种数据&#xff0c;那么处理数据就可以从下面几个方面考虑&#xff1a; 数据的来源 根据不同的数据来源&#xff0c;我们探究两个方面的内容&#xff1a; 数据的形式 数据的操作 当然&#xff0c;一通操作以后&#xff0c;各个…

操作系统:进程与线程大解析

一文就懂进程与线程一、进程/线程相关概念进程中断并发与并行并发并行线程线程分类多进程和多线程上下文进程上下文进程上下文切换的场景线程上下文扩展&#xff1a;协程线程与协程的区别&#xff1a;协程的优势&#xff1a;二、进程/线程区别与关系进程和线程的区别进程和线程…

【C/C++】你知道位段吗?段位?不,是位段!

本章重点 什么是位段&#xff1f; 位段的内存分配 位段的跨平台问题 位段的应用 上一篇文章我详细介绍了第一种自定义类型--结构体。本章节我们认识一下另外一种自定义类型-- 位段。因为讲解位段时需要用到一点结构体的知识&#xff0c;所以我直接把链接放到这里可按需直接…

Swagger

一、Swagger简介 1.1、前言 前后端分离 Vue SpringBoot 当前主流的前后端分离技术栈 后端时代 前端只用管理静态页面&#xff0c;如html&#xff0c;其余的交给后端&#xff0c;而后端通过模板引擎&#xff0c;如jsp进行管理 前后端分离时代 后端&#xff1a;后端控制层&…

jsp健身房会员管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 健身房会员管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql&#xff0c;…

S7-200SMART PLC模拟量应用及创建库文件的具体方法

S7-200SMART PLC模拟量应用及创建库文件的具体方法 具体使用方法可参考以下内容: 模拟量计算公式: OUT = (In_chx - In_RawMin) * (In_EuMax - InEuMin) / (In_RawMax -In_RawMin) + In_EuMin 其中: OUT:转换后的实际值; In_chx:模拟量采集值; In_RawMax:原始数据的最大…

小侃设计模式(九)-组合模式

1.概述 组合模式&#xff08;Composite Pattern&#xff09;又叫部分整体模式&#xff0c;它创建了对象组的树形结构&#xff0c;将对象组合成树状结构以表示“整体-部分”的层析关系&#xff0c;使用户对单个对象和组合对象具有一致的访问性&#xff0c;是结构型设计模式的一…

Windows下一键搭建MBP系统,支持多种版本任意选择,免费永久使用,多系统使用新方案

Windows下一键搭建MBP系统,支持多种版本任意选择,免费永久使用,多系统使用新方案。 安装起来相当的简单,简单到只需要执行一行命令即可完成。使得游戏和开发可以兼顾,并且不用花费数万米的可以使用MBP。不仅如此,经过各项专业的测试,还有接近于原生的MBP系统性能。 效…

WinHex(二)

目录 1.我们打开WinHex&#xff0c;点击打开磁盘按钮 2.不同的文件在WinHex中有不同的文件显示 3.WinHex简单使用 4.删除之前所创建的虚拟磁盘 1.我们打开WinHex&#xff0c;点击打开磁盘按钮 2.不同的文件在WinHex中有不同的文件显示 3.WinHex简单使用 4.删除之前所创建的虚拟…

Java—Double类型进行加减乘除出错(精度)问题

前言&#xff1a; 我们知道&#xff0c;计算机在计算数据过程中都要先把源代码翻译成二进制的机器码&#xff0c;然后再进行相关的运算。然而在转换的过程中&#xff0c;有些十进制数无法用一个有限的二进制数来表示&#xff0c;就是说转换的时候出现了精度的丢失问题&#xff…

模型部署遇到的问题

1.不是有效的Win32应用程序 更改项目中的配置类型&#xff1a; 从网上下载的工程&#xff0c;之前人家是用来封装成库&#xff08;dll&#xff09;的&#xff0c;改成exe就好了。 vs学习问题 关于打开程序时不是有效的Win32应用程序_Lay_Nobody的博客-CSDN博客_vs不是有效的wi…

Spring Boot开发之SpringSercurity(续)

Spring Boot开发之SpringSercurity 一、授权1、打开上次项目以及数据库2、有的页面不登录也能访问&#xff0c;比如首页、登录以及注册等&#xff0c;因此对于某些请求不需要登录则放行这些接口(1)修改MySercurityConfig(2)修改TestController类(3)点击运行&#xff0c;在没登录…

数据抓取工具有哪些-数据抓取工具免费推荐的有哪些

随着社会的进步&#xff0c;科技的发展。不管是企业还是个人都清楚地明白了数据的重要性。不仅可以让我们掌握一手资源&#xff0c;同时还能通过数据更清楚竞争对手。同时也告别了手动复制粘贴的痛苦。 企业人员 通过爬取动态网页数据分析客户行为拓展新业务&#xff0c;分析…

java毕业设计健民中医药方网设计(附源码、数据库)

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat8.5 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis Maven Vue 等等组成&#xff0c;B/…