设为首页 加入收藏

TOP

Asp.Net Core 轻松学-使用MariaDB/MySql/PostgreSQL和支持多个上下文对象(一)
2019-09-17 17:38:23 】 浏览:67
Tags:Asp.Net Core 轻松 使用 MariaDB/MySql/PostgreSQL 支持 多个 上下文 对象

前言

在上一篇文章中(Asp.Net Core 轻松学-10分钟使用EFCore连接MSSQL数据库)[https://www.cnblogs.com/viter/p/10243577.html],介绍了 EFCore 连接 MSSQL 的使用方法,在本章中,将继续介绍如何利用 EFCore 连接到 MariaDB/MySql 和 PostgreSQL 数据库,同时,在一个项目中,如何添加多个数据库上下文对象,并在业务中使用多个上下文对象,通过这两章的学习,你将掌握使用 EFCore 连接 MSSQL/MariaDB/MySql/PostgreSQL 的能力。在 .NETCore 的时代,由于其设计的独特性(区别于.NetFramework),使得我们非常容易的使用各种开源的、跨平台的产品和中间件,作为普通程序员,通过广泛参与和使用开源产品,是我们义不容辞的责任和义务,这种行为将进一步的扩大 .Net Core 的生态圈,进而影响整个开发行业。闲话说完,进入今天的正题,连接第三方数据库和支持多个上下文对象。

1. 使用 MariaDB/MySql 数据库

MariaDB基于MySQL并遵循GPL v2授权使用的。 她是由以Monty Program Ab为主要管理者的MariaDB社区开发的。MariaDB与另一分支MySQL最新版保持同步更新。在MariaDB工作与在MySQL下工作几乎一模一样,她们有相同的命令、界面,以及在MySQL中的库与API,所以MariaDB可以说是为替换MySQL量身定做的,所以它们之间是相通用(兼容),换用后连数据库都不必转换并可以获得MariaDB提供的许多更好的新特性。
以上介绍来自官方文档 https://mariadb.com/kb/zh-cn/mariadb-mariadb/

1.1

首先创建一个 Asp.Net Core WebApi 2.2 的项目 Ron.OtherDB,并从 NuGet 仓库引用包 Pomelo.EntityFrameworkCore.MySql,我本地安装的数据库是 MariaDB,从介绍中得知,MariaDB 和 MySql 的使用方式几乎是完全一致的,所以这里使用 Pomelo.EntityFrameworkCore.MySql 连接 MariaDB 也是没有任何问题的

1.2 项目结构和包引用如下

1.3 编写业务实体

下面将编写两个业务实体 Topic/Post,在本章中,无论是连接 MariaDB/MySql 还是 PostgreSQL,都将使用这两个实体对象

    public class Topic
    {
        public int Id { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }
        public DateTime CreateTime { get; set; }
        public ICollection<Post> Posts { get; set; }
    }

    public class Post
    {
        public int Id { get; set; }
        public int TopicId { get; set; }
        public string Content { get; set; }
        public DateTime CreateTime { get; set; }

        public Topic Topic { get; set; }
    }
1.4 编写上下文对象
    public class MySqlForumContext : DbContext
    {
        public MySqlForumContext(DbContextOptions<MySqlForumContext> options) : base(options) { }

        public DbSet<Topic> Topics { get; set; }
        public DbSet<Post> Posts { get; set; }
    }

该上下文对象非常简单,只是声明了一个 MySqlForumContext 对象,然后继承自 DbContext ,并将 Topic 和 Post 实体对象映射到该上下文中,这个使用方式和之前的文章中连接 MSSQL 数据库的使用方式是完全一致的,这点非常难得,通过 EFCore,无论你连接到的是哪种类型的数据库,其 API 的使用方式几乎是没有什么不同的,可以让开发人员平滑的过渡。

1.5 在 appsetting.json 中配置数据库连接字符串
{
  "Logging": {
    "LogLevel": {
      "Default": "Warning"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "Mysql.Forum": "server=127.0.0.1;port=3406;uid=root;pwd=root;database=Forum;"
  }
}

本来上面的连接字符串是无需指定端口的,但是因为使用 Pomelo.EntityFrameworkCore.MySql 组件连接 MySql 默认使用的端口是:3306,而我本机上指定端口为 3406,所以还是需要指定 port=3406。

1.6 在 Startup.cs 中初始化上下文对象
        public void ConfigureServices(IServiceCollection services)
        {
            services.AddDbContext<MySqlForumContext>(options =>
            {
                var connectionString = this.Configuration["ConnectionStrings:Mysql.Forum"];
                options.UseMySql(connectionString);
            });
            ...
        }
1.7 创建 Migrations 对象
  • 在包管理器控制台输入以下命令,创建 Migrations 对象

Add-Migration MySql.Forum.v1

  • 继续在包管理器控制台中输入以下命令,该命令将会在数据库中创建实体业务对象 Topic/Post 映射的数据表

Update-Databse

  • 打开 MariaDB ,可以看到,数据库已经成功创建

非常完美,到这一步,你已经完成了使用 EFCore 连接到 MariaDB/MySql 数据库的过程,先不要急做各种 CURD 的操作,下面,我们继续在项目中使用 EFCore 连接 PostgreSQL 数据库,到最后我们再一起做一个 CURD 的 Demo

2. 使用 PostgreSQL 数据库

PostgreSQL是一个功能强大的开源数据库系统。经过长达15年以上的积极开发和不断改进,PostgreSQL已在可靠性、稳定性、数据一致性等获得了业内极高的声誉。目前PostgreSQL可以运行在所有主流操作系统上,包括Linux、Unix(AIX、BSD、HP-UX、SGI IRIX、Mac OS X、Solaris和Tru64)和Windows。PostgreSQL是完全的事务安全性数据库,完

首页 上一页 1 2 3 4 下一页 尾页 1/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇C# 主要运算符中的成员访问(?.) 下一篇(9)ASP.NET Core 中的MVC路由二

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目