• 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();
                    }

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

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

  • 相关阅读:
    洛谷 P3868 [TJOI2009]猜数字
    洛谷 P2661 信息传递
    hdu 5418 Victor and World
    洛谷 P5024 保卫王国
    洛谷 P2470 [SCOI2007]压缩
    双栈排序 2008年NOIP全国联赛提高组(二分图染色)
    理想的正方形 HAOI2007(二维RMQ)
    10.23NOIP模拟题
    疫情控制 2012年NOIP全国联赛提高组(二分答案+贪心)
    图论模板
  • 原文地址:https://www.cnblogs.com/runliuv/p/14673444.html
Copyright © 2020-2023  润新知