感觉网上的方案都比较复杂,啃了半天微软的文档,总结了一个简单的方法。从IDbContextOptions入手,用简单的三层方法就可以实现。

一、App.Model

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace App.Model
{

[Table("tgoods")]
    public class Goods
    {
        [Key]
        public int rd { get; set; }

[Required]
        public string id { get; set; }

public string name { get; set; }

}//end class

二、App.Service

using Microsoft.EntityFrameworkCore;
using System.Data.Common;

using System.Reflection;

using App.Model;

namespace App.Service
{
    public interface IDbContextOptions
    {
        public DbContextOptions GetDbContextOptions();
    }

public  class AppDbContext :DbContext
    {
        public DbSet<Goods>? GoodsList { get; set; }

public AppDbContext(DbContextOptions options):base(options)
        {

}

}

}

三、App.Service.MySql

using Microsoft.EntityFrameworkCore;

using App.Model;
using App.Service;

namespace App.Service.MySql
{
    public class MySqlDbContextOptions :IDbContextOptions
    {

public DbContextOptions GetDbContextOptions()
        {
            string sql = @"Server=localhost; Port=3306; Database=data; User=root; Password=root; CharSet=utf8; Allow User Variables=true;";

DbContextOptions _options = new DbContextOptionsBuilder().UseMySQL(sql).Options;
            return _options;
        }

}//end class
}

四、UI层实现

//下面的2句可以通过配置文件来读取,自由发挥哈。可以参考紧跟后面的注释语句

string? assemblyName = System.IO.Directory.GetCurrentDirectory() + @"\App.Service.MySql.dll";
            string? className = @"App.Service.MySql.MySqlDbContextOptions";

//具体的配置文件读取可参考NetCore读取JSON配置文件_海阳宜家电脑的博客-CSDN博客
           // string? m_Provider = DBManager.GetProvider();
            //string? m_Database = DBManager.GetDataBase();
            //string? assemblyName = "DBUtilty.Service." + m_Database;
            //string? className = assemblyName + "." + m_Database + "Helper";

Assembly assembly = Assembly.LoadFrom(assemblyName);
            IDbContextOptions _options = (IDbContextOptions)assembly.CreateInstance(className);
            if (_options is null) MessageBox.Show("_options is null");
            myDb = new AppDbContext(_options.GetDbContextOptions());

NetCore实现DbContext接口兼容不同的数据库相关推荐

  1. mysql 接口访问_MySQL的数据库访问接口-阿里云开发者社区

    大部分流行的关系数据库产品采用的都是 C/S 架构.因此,应用程序要访问数据库的数据就必须和各种数据库客户端(也称为数据库访问接口)打交道.可以这么认为,每一种流行的编程语言都需要一个对应的数据库访问 ...

  2. 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题

    微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...

  3. 基于华为云CSE微服务接口兼容常见问题

    微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...

  4. oracle 11g dul,【学习笔记】Oracle DUL 11 兼容Oracle 12C数据库的DUL工具最新版本

    天萃荷净 oracle dul 11 正式发布,迫不及待的下载来测试,现在版本号为dul 11.2.0.0.1,目前只发布了for linux,其他版本估计要等等.期待该版本有引进新功能 1.orac ...

  5. ttfb 指 耗时_网页响应慢,waiting(TTFB)时间过长,接口返回耗时,数据库占用CPU 90%以上...

    记一次 网页响应慢,waiting(TTFB)时间过长,接口返回耗时,数据库占用CPU 90%以上问题排查 症状:H5页面打开白板,几十秒后出现页面,调试跟踪访问接口waiting(TTFB:全称 T ...

  6. java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用

    在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...

  7. Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用

    真的是太不容易了,以前的时候在window server 2003上面搭建了一套asp+oracle的接口系统,就费了好大的劲儿,其实那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨天到今 ...

  8. oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?

    作者介绍 洪烨,openGauss Contributor,多年银行业系统架构设计及DBA实战经验,<DB2数据库内部解析与性能调优>作者. openGauss的前世今生 上一篇看到很多朋 ...

  9. 跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)

    前言 撸码需谨慎,裸奔有风险.经常在一些技术交流群中了解到,还有很多小伙伴的项目中Api接口没有做任何安全机制验证,直接就裸奔了,对于一些临时项目或是个人小项目还好,其余的话,建议小伙伴们酌情考虑都加 ...

最新文章

  1. c语言socket句柄函数传递,通过源码解析 Node.js 中进程间通信中的 socket 句柄传递...
  2. 2020-10-27(汇编收获)
  3. 正则判断字符串是否为数字
  4. Android Studio报错: Alternatively, to transfer the license agreements from one workstation to another
  5. Android apk系列1-------APK签名
  6. H3C 静态路由的配置
  7. CMD窗口居中的方法(转)
  8. 算法:(BFS)迷宫寻路算法
  9. flutter 里面读取和复制内容到手机剪切板
  10. 计算机课程表怎么制作,制作我的课程表(教案)
  11. 数显之家快讯:【SHIO世硕心语】小聪明毁大前程,所有人都应该深思!
  12. c#把word文档转换为html页面
  13. Safari(苹果)浏览器和IE浏览器修改UserAgent方法
  14. 计算机系统能及时处理过程,在( )操作系控制下,计算机系统能及时处理由过程控制反馈的数据并做出响应。...
  15. SimpleDraweeView圆角
  16. 和睦小镇保卫战服务器位置,植物大战僵尸和睦小镇保卫战所有收集物品位置在哪_全收集要素攻略_3DM单机...
  17. 自己动手爬取免费代理IP
  18. 一篇文章把你带入到JavaScript中的闭包与高级函数
  19. u盘启动+linux+ks.cfg,通过ks.cfg文件自动安装系统
  20. 授权注册-软件保护工具(1):聊聊流程

热门文章

  1. SAP开发框架系列之 快速翻译功能
  2. 数据结构的一些小trick
  3. Mac 没有管理员账户 或 当前账户没有管理员权限 解决方案
  4. SA-M4C : Spatially Aware Multimodal Transformers for TextVQA --- 论文阅读笔记
  5. 虚拟同步发电机_学术简报︱基于虚拟同步发电机控制的T型三电平并网逆变器研究...
  6. 如何查询CAD图纸中具体位置的坐标?
  7. 【细品架构11/100】架构由术至道的转变(2)
  8. 【GPS信号跟踪捕获】基于FPGA的GPS系统跟踪捕获算法的Verilog实现
  9. 90% 前端都会的 ES6 简化代码技巧,你用过哪些?
  10. 微信H5开发-大多数前端都会遇到的几个兼容性的坑