zoukankan      html  css  js  c++  java
  • C# 之 .net core -- EF code first连接Mysql数据库

    回过头来看看,我之前写的有些复杂。推荐大家看下这个 https://www.cnblogs.com/lyps/archive/2018/11/06/9916167.html 博客。

    (为什么这么写,我记不太清了。大致步骤相同,不过我推荐的这个比我写的好。愿:在程序的路上多多学习,共同进步!奥利给!!!)

     一、在Models 新建两个数据库类

    这个是数据库需要生成的类基础

    public class User
        {
            [Key]
            public string ID { get; set; }
            [MaxLength(50)]
            public string Name { get; set; }
    
            public int Age { get; set; }
    
            [MaxLength(50)]
            public string Phone { get; set; }
    
            public string DepartmentID { get; set; }
    
            [ForeignKey("DepartmentID")]
            public Department Department { get; set; }
        }
    
     public class Department
        {
            [Key]
            public string ID { get; set; }
            [MaxLength(50)]
            public string Name { get; set; }
        }
    
    

    二、新建文件夹MysqlDbContext,然后新建类MysqlContext (注意文件夹的名字,不要跟类名一样)

    然后建立表与数据库关系映射

    public class MysqlContext : DbContext
        {
            public MysqlContext(DbContextOptions<MysqlContext> options) : base(options)
            {
    
            }
            //建立表与模型的映射关系
            public DbSet<User> User { get; set; }
            public DbSet<Department> Department { get; set; }
            protected override void OnModelCreating(ModelBuilder modelBuilder)
            {
                base.OnModelCreating(modelBuilder);
            }
        }

    三、添加依赖项

      依赖项右键 》》管理NuGet 包》》浏览 

    搜索这两个,注意安装的 版本号 ,是core 2.x的 你安装 3.x 会报错

    我安装的是2.2.6

    Microsoft.EntityFrameworkCore.Tools 
    Pomelo.EntityFrameworkCore.MySql

     不要在乎那个安装的颜色,第一个安装之前是浅蓝,安装之后就紫色了。

    四、添加 Util 文件夹 ,添加AppConfigurtaionServices类

      这个是创建生成的数据库文件的类

    public class AppConfigurtaionServices
        {
            public static IConfiguration Configuration { get; set; }
            static AppConfigurtaionServices()
            {
                //ReloadOnChange = true 当appsettings.json被修改时重新加载            
                Configuration = new ConfigurationBuilder()
                .Add(new JsonConfigurationSource { Path = "appsettings.json", ReloadOnChange = true })
                .Build();
            }
        }

    还有这种写法(我不是太懂这两个有什么区别,知道的大哥可以给我留言,万分感谢)

     public class DesignTimeDbContextFactory : IDesignTimeDbContextFactory<MysqlDbContext>
        {
            public MysqlDbContext CreateDbContext(string[] args)
            {
                var configBuilder = new ConfigurationBuilder()
                 .SetBasePath(Directory.GetCurrentDirectory())
                 .AddJsonFile("appsettings.json")
                 .Build();
    
                var builder = new DbContextOptionsBuilder<MysqlDbContext>();
                builder.UseMySql(configBuilder.GetConnectionString("DefaultConnection"));
                return new MysqlDbContext(builder.Options);
    
            }
        }

    这种写法需要引用(注意版本)

    Microsoft.Extensions.Configuration.FileExtensions

    Microsoft.Extensions.Configuration.Json

    Microsoft.Extensions.Configuration

    Pomelo.EntityFrameworkCore.MySql

    五、在Startup 的ConfigureServices下添加

    services.AddDbContext<MysqlContext>(options =>
                    options.UseMySql(Configuration.GetConnectionString("DefaultConnection")));

    六、在appsettings.json 添加数据库连接

     "ConnectionStrings": {
        "DefaultConnection": "Data Source =数据库服务器地址(127.127.127.127);port=3306;Initial Catalog=数据库名;user id=数据库连接名;password=密码;Character Set=utf8;sslmode=none"
      },

    七、最后一步

    执行命令找到程序应用控制台

    先输入 Add-Migration init 回车

    然后 Update-Database init 回车

    最后在数据看一下

    最后在补充一下,如果要添加或者修改数据库直接修改Models的类,然后执行Update-Database V1.1(这个v1.1是版本号),就可以了,不要直接改数据库。

    多说一句,如果是新建的类库里面放的话,默认执行的是启动项,也就是你的web项目,要把默认的改成你的类库

     结束。

    目录如下:

  • 相关阅读:
    配置对即时负载的优化
    通过重组索引提高性能
    使用索引视图提高性能
    sqlcmd
    (转)使用SQLCMD在SQLServer执行多个脚本
    在SQLServer处理中的一些问题及解决方法 NEWSEQUENTIALID()
    java反射机制与动态代理
    天天用的开发环境,你真的了解吗?
    通过IP获取对应所在地的地址
    unity3d KeyCode各键值说明
  • 原文地址:https://www.cnblogs.com/hkzw/p/12012340.html
Copyright © 2011-2022 走看看