• 编程语言界的丐帮 C#.NET FRAMEWORK 4.6 EF 连接MYSQL


    1.nuget 引用 EntityFramework 、和 MySql.Data.EntityFramework。  

    EntityFramework  版本:6.4.4,MySql.Data.EntityFramework 版本:8.0.30。

    下载 MySql.Data.EntityFramework  时会自动 下载 MySql.Data 这个库。

    2.新建实体类:

    using System;
    using System.ComponentModel.DataAnnotations;
    
    namespace DbEfTest
    {
        public class sys_user
        {
            [Key]
            public long id { get; set; }
    
            public string user_name { get; set; }
    
            public string real_name { get; set; }
            public string password { get; set; }
            public string remark { get; set; }
            public string create_userid { get; set; }
    
            //public string UpdateUserid { get; set; }
    
            public DateTime create_time { get; set; }
            public DateTime? update_time { get; set; }
    
    
        }
    }

    3.新建DbContext:

    using System.Data.Entity;
    
    namespace DbEfTest
    {
        public class EfTestDbContext : DbContext
        {
            public EfTestDbContext() : base("EfTestDbContext")
            {
    
            }
    
            public DbSet<sys_user> sys_user { get; set; }
    
        }
    }

    4.检查Web.config 或 app.config

    4.1 检查 entityFramework - providers 配置节,有没有:

    <provider invariantName="MySql.Data.MySqlClient" type="MySql.Data.MySqlClient.MySqlProviderServices, MySql.Data.EntityFramework" />

    没有则加上。

    4.2 检查 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=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>

    没有则加上。

    实测providers 和 DbProviderFactories中,不加上“, Version=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d” 也能正常跑。

    也可以不加“<remove invariant="MySql.Data.MySqlClient" />”。

    4.3 连接字符串:

    <connectionStrings>
        <add name="EfTestDbContext" connectionString="Data Source=127.0.0.1; port=3306;Database=entityframework_test;uid=root;pwd=some111;" 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" />
        </providers>
      </entityFramework>
    
      <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=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>
        </DbProviderFactories>
      </system.data>

    5.使用代码:

    using (EfTestDbContext db = new EfTestDbContext())
                    {
                        var tm1 = db.sys_user.FirstOrDefault(x => x.id == 1);
                        if (tm1 != null)
                        {
                            first = tm1.real_name;
                        }
                    }

    6.编译后,检查 bin 目录(网站)或根目录(EXE程序)是否存在MySql.Data.EntityFramework.dll 文件。

    如果没有,则要到 https://downloads.mysql.com/archives/c-net/ 去下载 Connector 并安装。Connector 要与 nuget 引用的版本一致,例如配置文件里 :Version=8.0.30.0,就得下载相应版本的Connector。

    然后到安装目录:C:\Program Files (x86)\MySQL\MySQL Connector Net 8.0.30\Assemblies\v4.5.2,找到 MySql.Data.EntityFramework.dll,复制到bin目录或根目录。

    7.运行程序。

     
    可能遇到的问题:

    The ADO.NET provider with invariant name 'MySql.Data.MySqlClient' is either not registered in the machine or application config file, or could not be loaded. See the inner exception for details. inner ex:找不到请求的 .Net Framework Data Provider。可能没有安装。

    解决方法:

    要在 DbProviderFactories 配置节中加 <add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=8.0.30.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"/>

    --



  • 相关阅读:
    ural(Timus) 1019 Line Painting
    ACMICPC Live Archive 2031 Dance Dance Revolution
    poj 3321 Apple Tree
    其他OJ 树型DP 选课
    poj 3548 Restoring the digits
    ACMICPC Live Archive 3031 Cable TV Network
    递归循环获取指定节点下面的所有子节点
    手动触发asp.net页面验证控件事件
    子级Repeater获取父级Repeater绑定项的值
    没有列名的数据绑定
  • 原文地址:https://www.cnblogs.com/runliuv/p/16723393.html
Copyright © 2020-2023  润新知