• C#.NET MySql8.0 EF db first


    .net framework 4.5.2,winform 程序。

    mysql 8.0

    1.nuget中引用EntityFramework,6.4.4

    2.nuget中引用MySql.Data.EntityFramework,8.0.18。(如果是设计器模式 ADO.NET 实体数据模型,不用要 8.0.23 否则会出现2次数据库名的情况)

    引用之后,可以观察到app.config中加入了2个provider:

    <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.18.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"></provider>
        </providers>

    在此上添加个连接:

    <connectionStrings>
        <add name="WorldDbContext" connectionString="server=192.168.2.167;user id=root;password=some;database=world" providerName="MySql.Data.MySqlClient" />
      </connectionStrings>

    以演示数据库:world,city表为例,添加实体类:

    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    
    namespace MySqlDbFirst.DbModel
    {
        public class city
        {
            [Key] //主键 
            [DatabaseGenerated(DatabaseGeneratedOption.Identity)]  //设置自增
            public int ID { get; set; }
            public string Name { get; set; }
            public string CountryCode { get; set; }
            public string District { get; set; }
        }
    }

    添加DbContext:

    using MySqlDbFirst.DbModel;
    using System.Data.Entity;
    using System.Data.Entity.ModelConfiguration.Conventions;
    
    namespace MySqlDbFirst.DbCon
    {    
        public class WorldDbContext: DbContext
        {
            public WorldDbContext()
                : base("name=WorldDbContext")
            {
            }
    
            protected override void OnModelCreating(DbModelBuilder modelBuilder)
            {
                //移除复数表名
                modelBuilder.Conventions.Remove<PluralizingTableNameConvention>();
                base.OnModelCreating(modelBuilder);
            }
    
            public virtual DbSet<city> Citys { get; set; }
        }
    }

    代码中使用:

    List<city> aa = new List<city>();
                    using (WorldDbContext db = new WorldDbContext())
                    {
                          aa= db.Citys.Take(100).ToList();
                    }

    如果遇到:输入字符串的格式不正确。

    一般是实体类字段和数据库中不匹配。

  • 相关阅读:
    rpm yum 等命令无响应的解决方法
    ulimit open files linux打开文件数设置验证
    解析XtraBackup备份MySQL的原理和过程(转)
    Xtrabackup之innobackupex备份恢复详解(转)
    Linux中内存查看命令free详解(转)
    mysql innobackupex xtrabackup 大数据量 备份 还原(转)
    Percona Xtrabackup备份mysql(转)
    安装完 MySQL 后必须调整的 10 项配置(转)
    MySQL 5.5 服务器变量详解二(转)
    MySQL 5.5 服务器变量详解一(转)
  • 原文地址:https://www.cnblogs.com/runliuv/p/14673444.html
Copyright © 2020-2023  润新知