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

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

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

  • 相关阅读:
    Qt与VC编程合作起龌龊
    谈谈误差补偿
    谈谈单片机编程入门方法
    小议设计模式
    创建VS工程使用神经网络库——FANN
    设计一个循环缓冲区模板
    旧文备份:FFTW介绍
    旧文备份:硬盘MBR引导记录损坏的一种修复方法
    How to disable the unused macros warning? --rust
    看阿里架构师是如何在高并发的情景下运筹帷幄
  • 原文地址:https://www.cnblogs.com/runliuv/p/14673444.html
Copyright © 2011-2022 走看看