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;
            }
        }
    }
 特别注意的地方就是实体类
 

EntityFramework DBContext 类动态控制 数据库连接(支持Oracle,SQL server)的更多相关文章

  1. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号

    mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...

  2. SQL Server 2012不支持从SQL Server 2000的备份进行还原

    错误: dbbackup failed: Unable to restore database 'ppt'Not valid backupThe database was backed up on a ...

  3. 介绍几种大型的Oracle/SQL Server数据库免费版

    我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...

  4. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  5. 查询获取所有数据库名及数据库中表的集合、数据库连接字符串(类生成器,暂时支持mysql,sql server,后期有oracle再更新)

    现所在公司做项目开发时,经常会自己创建model类,网上的生成器也很多,完全满足自己的不太现实,所以感觉自己做一个更有底气,主要针对过程中的一些语句进行整理,也供其他人学习参考. 连接字符串: mys ...

  6. Oracle & SQL Server 数据传输

    在开发中用到的Oracle与SQL Server间数据传输的不同方法的整理,比较.包括原理的简介,配置和实现方法,优缺点的比较,使用平台和DB,适合的应用范围和效能的比较. 整理的方法有如下六种: 1 ...

  7. 招聘 微软全球技术支持中心 sql server组

    微软亚太区全球技术支持中心(APGC CSS)是微软为个人用户.开发者.IT 专业人员到合作伙伴和企业级合作伙伴提供全方位.多元化的服务和技术支持的部门.一个优秀的SQL Server技术支持工程师应 ...

  8. 使用sql查询mysql/oracle/sql server/gp数据库中指定表的字段信息(字段名/字段类型/字段长度/是否是主键/是否为空)

    1,根据数据库类型拼接不同URL /** * 根据类型不同拼接连接的URL * @param dbType 1:mysql.2:oracle.3:sql server.4:gp * @param ip ...

  9. mysql,oracle,sql server中的默认事务隔离级别查看,更改

    未提交读(隔离事务的最低级别,只能保证不读取物理上损坏的数据) 已提交读(数据库引擎的默认级别) 可重复读 可序列化(隔离事务的最高级别,事务之间完全隔离) 可串行化比较严谨,级别高; MySQL m ...

随机推荐

  1. 20180610模拟赛T1——脱离地牢

    Description 在一个神秘的国度里,年轻的王子Paris与美丽的公主Helen在一起过着幸福的生活.他们都随身带有一块带磁性的阴阳魔法石,身居地狱的魔王Satan早就想着得到这两块石头了,只要 ...

  2. 爬虫-selenium的使用

    安装 pip install selenium 开始 # coding=utf-8 from selenium import webdriver # 引用selenium库 import time # ...

  3. PyCharm编写的代码生成可执行文件操作步骤

    1.打开Pycharm.2.打开Terminal(快捷键Alt + F12) 3.安装pyinstaller工具输入:pip install pyinstaller4.生成本项目可执行文件Termin ...

  4. [算法模板]SOS DP

    [算法模板]SOS DP 正文 SOS-DP(\(\text{Sum over Subsets}\))是用来解决这样的问题的: 其实就是子集和DP.上面每个\(F[mask]\)里面包含了\(mask ...

  5. 课后选做题-MyOD

    课后选做题-MyOD od命令的了解 功能 od命令用于将指定文件内容以八进制.十进制.十六进制.浮点格式或ASCII编码字符方式显示,通常用于显示或查看文件中不能直接显示在终端的字符.od命令系统默 ...

  6. 【Activiti学习之八】Spring整合Activiti

    环境 JDK 1.8 MySQL 5.6 Tomcat 8 idea activiti 5.22 activiti-explorer是官方提供的一个演示项目,可以使用页面管理Activiti流程.ac ...

  7. 关于Class: ES6 JavaScript的class的静态方法、属性和实例属性。

    1.什么叫做静态方法? 1.1.类相当于实例的原型, 所有在类中定义的方法, 都会被实例继承.如果在一个方法前,加上Static关键字,就表示该方法不会被继承,而是直接通过类来调用,这被称为 “静态方 ...

  8. 关于 Keras 模型

    在 Keras 中有两类主要的模型:Sequential 顺序模型 和 使用函数式 API 的 Model 类模型. 1.Sequential 顺序模型 ====>>开始使用 Keras ...

  9. Python 绘制 柱状图

    用Python 绘制 柱状图,使用的是bar()函数. 一个简单的例子: # 创建一个点数为 8 x 6 的窗口, 并设置分辨率为 80像素/每英寸 plt.figure(figsize=(10, 1 ...

  10. 在vue-cli中安装element

    在vue-cli中安装elemnent-ui 的步骤 在安装vue-cli 的基础上进行安装 1.npm i element-ui -S 安装element-cli 安装之后会在项目中的node_mo ...