NetCore实现DbContext接口兼容不同的数据库
感觉网上的方案都比较复杂,啃了半天微软的文档,总结了一个简单的方法。从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接口兼容不同的数据库相关推荐
- mysql 接口访问_MySQL的数据库访问接口-阿里云开发者社区
大部分流行的关系数据库产品采用的都是 C/S 架构.因此,应用程序要访问数据库的数据就必须和各种数据库客户端(也称为数据库访问接口)打交道.可以这么认为,每一种流行的编程语言都需要一个对应的数据库访问 ...
- 微服务启动顺序_基于华为云CSE微服务接口兼容常见问题
微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...
- 基于华为云CSE微服务接口兼容常见问题
微服务接口兼容常见问题 在进行微服务持续迭代开发的过程中,由于新特性在不停的加入,一些过时的特性在不停的修改,接口兼容问题面临巨大的挑战,特别是在运行环境多版本共存(灰度发布)的情况下.本章节主要描述 ...
- oracle 11g dul,【学习笔记】Oracle DUL 11 兼容Oracle 12C数据库的DUL工具最新版本
天萃荷净 oracle dul 11 正式发布,迫不及待的下载来测试,现在版本号为dul 11.2.0.0.1,目前只发布了for linux,其他版本估计要等等.期待该版本有引进新功能 1.orac ...
- ttfb 指 耗时_网页响应慢,waiting(TTFB)时间过长,接口返回耗时,数据库占用CPU 90%以上...
记一次 网页响应慢,waiting(TTFB)时间过长,接口返回耗时,数据库占用CPU 90%以上问题排查 症状:H5页面打开白板,几十秒后出现页面,调试跟踪访问接口waiting(TTFB:全称 T ...
- java 清空控制台_利用原生库和JNI(Java原生接口)实现H2数据库漏洞利用
在H2数据库引擎中获取代码执行权限的技术早已是众所周知,但有个要求就是H2能够动态编译Java代码.而本文将向大家展示以前没有公开过的利用H2的方法,并且无需使用Java编译器,即通过原生库和JNI( ...
- Windows server2008 搭建ASP接口访问连接oracle数据库全过程记录--备用
真的是太不容易了,以前的时候在window server 2003上面搭建了一套asp+oracle的接口系统,就费了好大的劲儿,其实那会迷迷瞪瞪的也不知道怎么的就弄好了,也懒得管了.OK,从昨天到今 ...
- oracle 临时表存在哪里_openGauss魔改PG?它能兼容Oracle的数据库表吗?
作者介绍 洪烨,openGauss Contributor,多年银行业系统架构设计及DBA实战经验,<DB2数据库内部解析与性能调优>作者. openGauss的前世今生 上一篇看到很多朋 ...
- 跟我一起学.NetCore之WebApi接口裸奔有风险(Jwt)
前言 撸码需谨慎,裸奔有风险.经常在一些技术交流群中了解到,还有很多小伙伴的项目中Api接口没有做任何安全机制验证,直接就裸奔了,对于一些临时项目或是个人小项目还好,其余的话,建议小伙伴们酌情考虑都加 ...
最新文章
- c语言socket句柄函数传递,通过源码解析 Node.js 中进程间通信中的 socket 句柄传递...
- 2020-10-27(汇编收获)
- 正则判断字符串是否为数字
- Android Studio报错: Alternatively, to transfer the license agreements from one workstation to another
- Android apk系列1-------APK签名
- H3C 静态路由的配置
- CMD窗口居中的方法(转)
- 算法:(BFS)迷宫寻路算法
- flutter 里面读取和复制内容到手机剪切板
- 计算机课程表怎么制作,制作我的课程表(教案)
- 数显之家快讯:【SHIO世硕心语】小聪明毁大前程,所有人都应该深思!
- c#把word文档转换为html页面
- Safari(苹果)浏览器和IE浏览器修改UserAgent方法
- 计算机系统能及时处理过程,在( )操作系控制下,计算机系统能及时处理由过程控制反馈的数据并做出响应。...
- SimpleDraweeView圆角
- 和睦小镇保卫战服务器位置,植物大战僵尸和睦小镇保卫战所有收集物品位置在哪_全收集要素攻略_3DM单机...
- 自己动手爬取免费代理IP
- 一篇文章把你带入到JavaScript中的闭包与高级函数
- u盘启动+linux+ks.cfg,通过ks.cfg文件自动安装系统
- 授权注册-软件保护工具(1):聊聊流程
热门文章
- SAP开发框架系列之 快速翻译功能
- 数据结构的一些小trick
- Mac 没有管理员账户 或 当前账户没有管理员权限 解决方案
- SA-M4C : Spatially Aware Multimodal Transformers for TextVQA --- 论文阅读笔记
- 虚拟同步发电机_学术简报︱基于虚拟同步发电机控制的T型三电平并网逆变器研究...
- 如何查询CAD图纸中具体位置的坐标?
- 【细品架构11/100】架构由术至道的转变(2)
- 【GPS信号跟踪捕获】基于FPGA的GPS系统跟踪捕获算法的Verilog实现
- 90% 前端都会的 ES6 简化代码技巧,你用过哪些?
- 微信H5开发-大多数前端都会遇到的几个兼容性的坑