zoukankan      html  css  js  c++  java
  • C# 根据ADO.NET数据库连接字符串构建EntityFrame数据库连接字符串

    为了保持开发效率,以及保持代码优雅,项目中引用了EntityFrame。但是又因为某些报表功能需要大量计算,所以又要求直接使用ADO.NET,调用存储过程进行计算。

    于是乎webconfig文件中就会出现两种数据库连接字符串。

    <!--EntityFrame-->
    <connectionStrings>
    <add name="GpsDBEntities" connectionString="metadata=res://*/Models.DbModels.XXXX.csdl|res://*/Models.DbModels.XXXX.ssdl|res://*/Models.DbModels.XXXX.msl;provider=System.Data.SqlClient;provider connection string=&quot;data source=XXXXX;initial catalog=XXXXX;persist security info=True;user id=XXXX;password=XXXXX;MultipleActiveResultSets=True;App=EntityFramework&quot;"providerName="System.Data.EntityClient" />
    </connectionStrings>
    <!--ADO.NET-->
    <add key="sqlConnectionString" value="server=XXXXX;uid=XXXXX;pwd=XXXX;database=XXXX"></add>

    可以这样写又显得累赘,为什么同一个数据库,我要写两次连接字符串。

    于是想只保留ADO.NET的数据库连接字符串,在使用EntityFrame的时候,生产EntityFrame专用的数据库连接字符串进行连接。

    因此我构建了一个工具类,用来生成EntityFrame的数据库连接字符串。

    public sealed class DBConnectionUtil
    {
        private static string IP { get; set; }
        private static string UserId { get; set; }
        private static string Password { get; set; }
        private static string DBName { get; set; }
        public static string EntityConnectionStr { get; set; }
    
        public static readonly DBConnectionUtil instance = new DBConnectionUtil();
        private DBConnectionUtil() 
        {
            GetDBSetting();
        }
    
        private void GetDBSetting(){
            var connectStr = ConfigurationManager.AppSettings["sqlConnectionString"];
            var settingArray = connectStr.Split(';');
            foreach (var setting in settingArray) 
            {
                var keyVal = setting.Split('=');
                switch (keyVal[0]) 
                {
                    case "server": IP = keyVal[1]; break;
                    case "uid": UserId = keyVal[1]; break;
                    case "pwd": Password = keyVal[1]; break;
                    case "database": DBName = keyVal[1]; break;
                }
            }
    
            EntityConnectionStr = "metadata=res://*/Models.DbModels.GpsDB.csdl|res://*/Models.DbModels.GpsDB.ssdl|res://*/Models.DbModels.GpsDB.msl;provider=System.Data.SqlClient;provider connection string="data source=" + IP + ";initial catalog=" + DBName + ";persist security info=True;user id=" + UserId + ";password=" + Password + ";MultipleActiveResultSets=True;App=EntityFramework"";
        }
    }

    然后在使用时直接调用即可。

    public partial class XXXXX : DbContext
    {
        public XXXXX()
            : base(DBConnectionUtil.EntityConnectionStr)
        {
        }
    
        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            throw new UnintentionalCodeFirstException();
        }
    }
  • 相关阅读:
    UML的相关基础知识
    easyui的datagrid、treegrid增加表头菜单,用于显示或隐藏列
    easyui datagrid load的时候,提交的时候多了name为数字的参数
    Easyui Dialog 设置初始位置
    投票系统的代码总结
    部门组织机构树的使用
    TCP连接客户端的方法
    播放M3U8的js代码
    JAVA的split的用法
    BOLB转word文件,和word文件转换BOLB
  • 原文地址:https://www.cnblogs.com/nonkicat/p/4171277.html
Copyright © 2011-2022 走看看