zoukankan      html  css  js  c++  java
  • .Net Core控制台&EFCore连接Mysql

      在用惯了Asp.Net Core提供的基架后,反过来想一想,貌似忘记了控制台如何去连接数据库了,因此,写一篇文章来借此巩固下并以后再来回顾时,加快步骤。

    1、新建一个.Net Core控制台,然后安装Nuget包

    Microsoft.EntityFrameworkCore
    Microsoft.EntityFrameworkCore.Design
    Pomelo.EntityFrameworkCore.MySql
    Microsoft.Extensions.Configuration.Json

    2、添加一个文件夹Models,并增加一个实体类Company,增加该实体类一系列属性

    namespace FastConnect.Tool.Models
    {
        /// <summary>
        /// 公司信息
        /// </summary>
        public class Company
        {
            /// <summary>
            /// Id
            /// </summary>
            public int Id { get; set; }
    
            /// <summary>
            /// 公司名称
            /// </summary>
            public string Name { get; set; }
    
            /// <summary>
            /// 公司地址
            /// </summary>
            public string Address { get; set; }
        }
    }

    3、再增加一个配置文件appsettings.json,按照数据库具体配置去弄,比如接口,用户名密码等,并且本次想用的数据库名。需右键设置该文件的输出方式为始终复制。

    {
      "ConnectionStrings": {
        "Default": "Server=xxx;Database=fastconnectdb;Port=10143;charset=utf8;uid=tester;pwd=xxx@yy;"
      }
    }

    4、增加DbContext,并继承DbContext,该父类在EFCore中,将之前建立的类加入到该DbContext中,配置这个数据库上下文需要的连接字符串,通过配置类去读取第二步骤中的配置项文件,在OnConfiguring中使用UseMysql,该方法在Pomelo的dll中并读取其中的默认连接字符串节点。

    using FastConnect.Tool.Models;
    using Microsoft.EntityFrameworkCore;
    using Microsoft.Extensions.Configuration;
    using System.IO;
    
    namespace FastConnect.Tool
    {
        public class FastConnectDbContext : DbContext
        {
            public DbSet<Company> Companys { get; set; }
    
            private IConfiguration configuration;
    
            public FastConnectDbContext()
            {
                configuration = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory()).AddJsonFile("appsettings.json").Build();
            }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseMySql(configuration.GetConnectionString("Default"));
            }
        }
    }

    5、在程序包管理器控制台中选择该项目,必须要选择DbContext所在项目,本次DbContext所在项目为控制台本部。

    并键入如下两行,如无错误,则数据库已经生成,可以查看项目文件夹中,将会多出一个文件夹和若干文件,这是记录迁移信息的。

    add-migration InitDataBase
    update-database

     查看数据库中,已经生成了两张表,第一张是由EFCore维护的迁移记录表,第二张是我们所建立的实体表

    6、在Program.cs文件中加入一点对数据库的操作,通过using来管理数据库的连接,这种方式较为便捷,当然也可以使用其它方式来管理。

        class Program
        {
            static void Main(string[] args)
            {
                using (var dbContext = new FastConnectDbContext())
                {
                    dbContext.Companys.Add(new Company
                    {
                        Name = "星城科技",
                        Address = "湖南长沙雨花区"
                    });
    
                    dbContext.SaveChanges();
    
                    Console.WriteLine("All Company in database:");
                    foreach (var company in dbContext.Companys)
                    {
                        Console.WriteLine("{0}-{1}", company.Name, company.Address);
                    }
                    Console.ReadKey();
                }
            }
        }

    7、设置当前项目为启动项目,启动查看运行效果,数据加入到数据库中,并从数据库中再次读取出来:

     8、最终控制台项目结构

       仓库地址:https://gitee.com/530521314/Partner.TreasureChest.git

    2019-12-06,望技术有成后能回来看见自己的脚步
  • 相关阅读:
    PAT Basic 1077 互评成绩计算 (20 分)
    PAT Basic 1055 集体照 (25 分)
    PAT Basic 1059 C语言竞赛 (20 分)
    PAT Basic 1072 开学寄语 (20 分)
    PAT Basic 1049 数列的片段和 (20 分)
    蓝桥杯BASIC-13 数列排序
    蓝桥杯入门——3.序列求和
    蓝桥杯入门——2.圆的面积
    蓝桥杯入门——1.Fibonacci数列
    树的总结(遍历,BST,AVL原型,堆,练习题)
  • 原文地址:https://www.cnblogs.com/CKExp/p/11997260.html
Copyright © 2011-2022 走看看