zoukankan      html  css  js  c++  java
  • 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();
                    }

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

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

  • 相关阅读:
    Ubuntu实现树莓派交叉编译
    IOS页面自动布局 之 NSLayoutConstraint基础篇
    环信SDK与Apple Watch的结合(3)
    数据结构C语言版干货------->线性表之顺序表
    Java的反射机制(应用篇)
    Java之泛型深解
    Java集合类--->入门下篇
    Java之泛型浅解
    Java集合类--->入门上篇
    数据结构基础铺垫篇000
  • 原文地址:https://www.cnblogs.com/runliuv/p/14673444.html
Copyright © 2011-2022 走看看