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 ...
随机推荐
- Java 中的各种锁
table th:first-of-type { width: 100px; } 锁的类型 锁的实现 乐观锁 在数据库中可以使用version版本号去实现:在Java中是使用CAS(Compare A ...
- 使用面向对象思想封装js(附实例)
平时在写js时应该用面向对象思想将每一组功能封装成一个模块,可实现模块间的高内聚低耦合.重用.结构清晰........... 如果页面中逻辑复杂.功能多,不使用模块封装是不可想象的,维护起来非常复杂. ...
- 把antd的组件源码搬到Ant Design Pro中使用
把组件源码搬过来后,样式死活不生效,经过1天的努力,有说less-loader的,有说webpack配置,还有说babel配置的,最后,我自己找到了方法 就是在global.less中使用@impor ...
- Ubuntu-tools安装
1.tools灰色 2.虚拟机→→安装VMware Tools 跳到压缩包文件:VMwareTools-10.3.2-9925305.tar.gz 任意复制到某个路径,如桌面 打开终端,cd进入文件所 ...
- P1553 数字反转(升级版)
Emma,关于这道题,我..不想说啥子,也就做了它一个下午左右吧(原由:本人太菜) 补充一个知识点goto语句: 这个东西特别的好用,可以直接无条件调到冒号后面的语句,进行操作. 举个例子: #inc ...
- 洛谷P1230智力大冲浪 题解
题目描述 小伟报名参加中央电视台的智力大冲浪节目.本次挑战赛吸引了众多参赛者,主持人为了表彰大家的勇气,先奖励每个参赛者m元.先不要太高兴!因为这些钱还不一定都是你的?!接下来主持人宣布了比赛规则: ...
- nginx 配置状态监控
Nginx有内置一个状态页,需要在编译的时候指定参数--with-http_stub_status_module参数方可打开.也就是说,该功能是由http_stub_status_module模块提供 ...
- rsync 使用方法 ssh免密问题 不同端口同步
不同端口同步(前提还是做好免密) 主要通过选项-e "ssh -p 端口"来实现 重命名了秘钥文件 指定-i即可~ 1. 本地目录同步到导地不同端口主机目录 [root@bakse ...
- 编译udf小软件(附视频教程)
小软件下载地址(不仅支持Visual Studio并且打包gcc,解压即可编译): https://pan.baidu.com/s/1XPfjfY8DC2KKS8gj1KhutQ 提取码: 6kju ...
- tcp & 长连接 短连接
参考文档: tcp协议 http://blog.chinaunix.net/uid-26833883-id-3627644.html 长连接和短连接 http://blog.csdn.net/free ...