public class ManagementDBContext : DbContext
{
public static string configString = ConfigHelper.GetDatabase;
public ManagementDBContext() : base(configString)
{
Database.SetInitializer<ManagementDBContext>(null);
}
/// <summary>
/// 模型的创建
/// </summary>
/// <param name="modelBuilder"></param>
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// 判断使用的数据库动态控制 Schema
if (ConfigHelper.GetDBType == Enums.Database.Oracle)
{
string schema = GetConfiguration("USER ID");
modelBuilder.HasDefaultSchema(schema);
modelBuilder.Types().Configure(entity => entity.ToTable(entity.ClrType.Name, schema));
}
}
/// <summary>
/// 获取配置连接串
/// </summary>
/// <param name="str">要取的字符名称</param>
/// <returns></returns>
private static string GetConfiguration(string str)
{
if (string.IsNullOrEmpty(str)) str = str.ToUpper();
string con = ConfigHelper.GetConStrings(configString);
string[] strSplit = con.Split(';');
Dictionary<string, string> attribList = new Dictionary<string, string>();
for (int i = 0; i != strSplit.Length; i++)
{
string[] attribValue = strSplit[i].Split('=');
attribList.Add(attribValue[0], attribValue[1]);
}
return attribList[str];
}
/// <summary>
/// 导入Excel
/// </summary>
public DbSet<ImportExcel> importExcel { get; set; }
}
webconfig 内容
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client" connectionString="User Id=Teest;Password=Test123;Data Source=localhost:1521/orcl" />
<!--<add name="DefaultConnection" connectionString="Data Source=.;Initial Catalog=databaseLog;Persist Security Info=True;MultipleActiveResultSets=True;Pooling=true;Max Pool Size=512;Min Pool Size=5;Connection Timeout=120" providerName="System.Data.SqlClient" />-->
<add name="DefaultConnection" connectionString="server=.;database=ManageDB;user id=sa;pwd=sa" providerName="System.Data.SqlClient" />
</connectionStrings>
WebConfig 里配置
<!-- 指定连接数据库 SqlServer/Oracle|0/1-->
<add key="Database" value="0" />
/// <summary>
/// 读取配置工具类
/// </summary>
public class ConfigHelper
{
private static string temp = string.Empty;
private static string database = ConfigurationManager.AppSettings["Database"].ToString().Trim();
private static string upload = ConfigurationManager.AppSettings[StringHelper.UPLOAD.ToLower()].ToString().Trim();
private static string project = AppDomain.CurrentDomain.BaseDirectory.Replace("\\", "/").ToString();
/// <summary>
/// 获取链接的数据库
/// </summary>
public static string GetDatabase
{
get
{
if (!string.IsNullOrEmpty(database))
return GetConnectionDefaultName(database);
else return GetConnectionStrings(StringHelper.WEBCONFIG);
}
}
/// <summary>
/// 读取xml节点名称,返回数据库连接名称
/// </summary>
/// <param name="xmlNodeName"></param>
/// <returns></returns>
private static string GetConnectionStrings(string fileName)
{
string[] array = null;
XmlDocument doc = new XmlDocument();
temp = project + fileName;
if (!FileHelper.FileExists(temp)) return temp;
doc.Load(temp);
XmlNodeList nodeList = doc.DocumentElement.ChildNodes;
if (nodeList.Count > 0)
foreach (XmlNode node in nodeList)
{
if (node.LocalName.ToLower() != StringHelper.CONNECTIONSTRINGS.ToLower())
continue;
array = node.InnerXml.Split('>');
array = array[0].Replace("\"", "").Split(' ');
foreach (var arr in array)
{
if (arr.ToLower().Contains(StringHelper.NAME.ToLower()))
{
array = arr.Split('=');
break;
}
}
}
return temp = array == null ? null : array[1];
}
/// <summary>
/// 动态获取Web.config 中的链接数据库名称
/// </summary>
/// <param name="sqlName"></param>
/// <returns></returns>
public static string GetConnectionDefaultName(string sqlName)
{
string[] array = null;
XmlDocument doc = new XmlDocument();
temp = project + StringHelper.WEBCONFIG;
if (!FileHelper.FileExists(temp)) return temp;
doc.Load(temp);
temp = GetDataBaseName(sqlName);
XmlNodeList nodeList = doc.DocumentElement.ChildNodes;
if (nodeList.Count > 0)
{
foreach (XmlNode node in nodeList)
{
if (node.LocalName.ToLower() == StringHelper.CONNECTIONSTRINGS.ToLower())
{
array = node.InnerXml.Split('>');
break;
}
}
}
if (array.Length > 0)
{
for (int i = 0; i < array.Length - 1; i++)
{
if (array[i].ToLower().Contains(temp))
{
temp = array[i];
break;
}
}
}
array = temp.Replace("\"", "").Split(' ');
foreach (var arr in array)
{
if (arr.ToLower().Contains(StringHelper.NAME.ToLower()))
{
array = arr.Split('=');
break;
}
}
return temp = array == null ? null : array[1];
}
/// <summary>
/// 获取上传文件物理路径
/// </summary>
public static string GetPhysicalPath
{
get
{
if (!string.IsNullOrEmpty(upload))
return project + upload;
else
return project + StringHelper.UPLOAD.ToLower();
}
}
/// <summary>
/// 获取服务器文件路径
/// </summary>
public static string GetServicePath
{
get
{
return FileHelper.IsObliqueBar(GetService) + StringHelper.UPLOAD.ToLower();
}
}
/// <summary>
/// 获取当前项目地址以及端口号
/// </summary>
public static string GetService
{
get
{
return StringHelper.HTTP.ToLower() + "://" + StringHelper.SERVER_NAME + ":" + StringHelper.SERVER_PORT;
}
}
/// <summary>
/// 获取链接数据库字符串
/// </summary>
/// <param name="conName">数据库链接名称</param>
/// <returns></returns>
public static string GetConStrings(string conn)
{
if (!string.IsNullOrEmpty(conn))
return ConfigurationManager.ConnectionStrings[conn].ToString().ToUpper();
else
return conn;
}
/// <summary>
/// 获取当前使用的数据库
/// </summary>
/// <returns></returns>
public static string GetDataBaseName(string dbName)
{
try
{
temp = dbName.ToLower() == StringHelper.ORACLE.ToLower() ? StringHelper.ORACLE.ToLower() :
dbName.ToLower() == StringHelper.SQLSERVER.ToLower() ? StringHelper.SQLCLIENT.ToLower() :
Convert.ToInt32(dbName.ToLower()) == Convert.ToInt32(Database.SqlServer) ? StringHelper.SQLCLIENT.ToLower() :
Convert.ToInt32(dbName.ToLower()) == Convert.ToInt32(Database.Oracle) ? StringHelper.ORACLE.ToLower() : StringHelper.SQLCLIENT.ToLower();
}
catch (Exception)
{
temp = StringHelper.SQLCLIENT.ToLower();
}
return temp;
}
/// <summary>
/// 获取链接数据库类型
/// </summary>
public static Database GetDBType
{
get
{
return GetDatabaseType(database);
}
}
/// <summary>
/// 以枚举类型返回数据库类型
/// </summary>
/// <param name="dbType"></param>
/// <returns></returns>
public static Database GetDatabaseType(string dbType)
{
try
{
return dbType.ToLower() == StringHelper.ORACLE.ToLower() ? Database.Oracle :
dbType.ToLower() == StringHelper.SQLSERVER.ToLower() ? Database.SqlServer :
Convert.ToInt32(dbType.ToLower()) == Convert.ToInt32(Database.SqlServer) ? Database.SqlServer :
Convert.ToInt32(dbType.ToLower()) == Convert.ToInt32(Database.Oracle) ? Database.Oracle : Database.SqlServer;
}
catch (Exception)
{
return Database.SqlServer;
}
}
}
特别注意的地方就是实体类

- mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号
mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...
- SQL Server 2012不支持从SQL Server 2000的备份进行还原
错误: dbbackup failed: Unable to restore database 'ppt'Not valid backupThe database was backed up on a ...
- 介绍几种大型的Oracle/SQL Server数据库免费版
我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...
- Oracle,SQL Server 数据库较MySql数据库,Sql语句差异
原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...
- 查询获取所有数据库名及数据库中表的集合、数据库连接字符串(类生成器,暂时支持mysql,sql server,后期有oracle再更新)
现所在公司做项目开发时,经常会自己创建model类,网上的生成器也很多,完全满足自己的不太现实,所以感觉自己做一个更有底气,主要针对过程中的一些语句进行整理,也供其他人学习参考. 连接字符串: mys ...
- Oracle & SQL Server 数据传输
在开发中用到的Oracle与SQL Server间数据传输的不同方法的整理,比较.包括原理的简介,配置和实现方法,优缺点的比较,使用平台和DB,适合的应用范围和效能的比较. 整理的方法有如下六种: 1 ...
- 招聘 微软全球技术支持中心 sql server组
微软亚太区全球技术支持中心(APGC CSS)是微软为个人用户.开发者.IT 专业人员到合作伙伴和企业级合作伙伴提供全方位.多元化的服务和技术支持的部门.一个优秀的SQL Server技术支持工程师应 ...
- 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)
1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...
- mysql,oracle,sql server中的默认事务隔离级别查看,更改
未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) 已提交读(数据库引擎的默认级别) 可重复读 可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高; MySQL m ...
随机推荐
- JLOI 2009 二叉树问题
洛谷 P3884 [JLOI2009]二叉树问题 洛谷传送门 JDOJ 2024: [JLOI2009]二叉树问题 JDOJ传送门 Description 如下图所示的一棵二叉树的深度.宽度及结点间距 ...
- 深度学习查看GPU实时使用情况
1.CPU使用情况查看 动态查看 打开终端,输入: $ top按Ctrl+C退出查看. 即可看到实时的CPU使用情况. 查看版本 $ top -h 即可看到当前procps-ng的版本. 2. gp ...
- html--前端javascript初识
一.JavaScript简介 JavaScript是一种基于对象和事件驱动并具有安全性能的脚本语言,有了JavaScript,可使网页变得生动.使用它的目的是与HTML超文本标识语言.Java 脚本语 ...
- 请写出jQuery绑定事件的方法,不少于两种
bind on live one 简写事件:click.hover.mousemove.mouseup.mousedown……
- K8s预选策略和优选函数简介
调度器选择策略: 预选策略(Predicate) 1. 根据运行Pod的资源限制来排除不符合要求的Node 2. 根据运行Pod时,是否要求共享宿主机的网络名称空间来判断,如: 某Pod启动要共享宿主 ...
- mysql实现行转列功能
实现从图一转行成图二的功能: 图一: 图二: 建表语句: CREATE TABLE `t_user_score` ( `id` ) NOT NULL AUTO_INCREMENT COMMENT '主 ...
- 【操作系统之十一】任务队列、CPU Load、指令乱序、指令屏障
一.CPU Loadcpu load是对使用或者等待cpu进程的统计(数量的累加):每一个使用(running)或者等待(runnable)CPU的进程,都会使load值+1;每一个结束的进程,都会使 ...
- storm 介绍+八种grouping方法
Storm主要的应用场景就是流式数据处理,例如实时推荐系统,实时监控系统等. storm中的相关概念 在storm中,分布式的计算结构指的是一个topology(拓扑),一个topology由流式数据 ...
- 新添加的用户无法sudo解决方案
问题:xxx(用户名) is not in the sudoers file. This incident will be reported. 用户管理: 1.创建用户 (1)方法1 $ sudo a ...
- CI框架从哪里看起?CI框架怎么开始学习,CI的初始设置
很多朋友不知道CI框架从哪里开始学起,想学一个新的框架其实并不难.只要你认真研究,自习摸索都很简单! 概述和基本配置参数 配置CI: application/config/config.php:14配 ...