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 ...
随机推荐
- 洛谷 P1508
P1508 所属知识点:DP 主要题意: 就是求一个矩阵从下边走到上边,可以走自己前方或左前方或右前方. 问走到上边一共经过的路径和. 类型题:P1216 解题思路: 参考上边的类型题(因为比较简单) ...
- 从$a_n=f(n)$的角度理解数列中的表达式$a_{n+1}=\frac{k}{a_n}$
函数周期性 前面我们学习过函数的周期性的给出方式: \(f(x+a)=f(x)\) \(\hspace{2cm}\) \(T=a\) \(f(x+a)=-f(x)\) \(\hspace{2cm}\) ...
- SqlServer 快速查看表结构
--快速查看表结构(比较全面的) THEN obj.name ELSE '' END AS 表名, col.colorder AS 序号 , col.name AS 列名 , ISNULL(ep.[v ...
- springcloud的Hystrix turbine断路器聚合监控实现(基于springboot2.02版本)
本文基于方志朋先生的博客实现:https://blog.csdn.net/forezp/article/details/70233227 一.准本工作 1.工具:Idea,JDK1.8,Maven3. ...
- Redis 动态字符串 SDS 源码解析
本文作者: Pushy 本文链接: http://pushy.site/2019/12/21/redis-sds/ 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可 ...
- 《Linux就该这么学》培训笔记_ch16_使用Squid部署代理缓存服务
<Linux就该这么学>培训笔记_ch16_使用Squid部署代理缓存服务 文章最后会post上书本的笔记照片. 文章主要内容: 代理缓存服务 配置Squid服务程序 正向代理 标准正向代 ...
- kali 更改图标村大小
1.“设置” --> "通用辅助功能" --> "大号字体" 2.在终端中输入 “gnome-tweaks” 打开 优化 --> 扩展 -- ...
- 关于Linux TCP "SACK PANIC" 远程拒绝服务漏洞的修复
Linux 内核被曝存在TCP "SACK PANIC" 远程拒绝服务漏洞(漏洞编号:CVE-2019-11477,CVE-2019-11478,CVE-2019-11479),攻 ...
- javascript 忍者秘籍读书笔记(二)
闭包的私有变量 function Ninja() { let feints = 0; this.getFeints = function () { return feints }; this.fein ...
- unity内存管理(转)
转自:https://www.cnblogs.com/zsb517/p/5724908.html Unity3D 里有两种动态加载机制:一个是Resources.Load,另外一个通过AssetBun ...