Esempio n. 1
0
        public static void InitDataBase()
        {
            var connStringList = ConfigurationManager.ConnectionStrings;

            foreach (ConnectionStringSettings connStr in connStringList)
            {
                if (string.IsNullOrWhiteSpace(connStr.ConnectionString))
                {
                    continue;
                }
                var type = connStr.ProviderName;
                var name = connStr.Name;
                var conn = Utility.Decode(connStr.ConnectionString) ?? connStr.ConnectionString;

                ISessionFactory factory = null;
                //1、可以只对默认库(DefaultKey)做连接字符串的注册。
                //2、EF的连接字符串的写法同样适用于ado的连接串
                //3、当前为了支持注册多个库的连接字符串,故取消了只对默认库DefaultKey的注册。看以下代码
                //if (name == DefaultKey)//只对默认库做注册(取消)
                //{
                switch (type)
                {
                case "Oracle.ManagedDataAccess.Client":        //Oracle
                    factory = new SessionFactory(conn, DatabaseType.Oracle);
                    break;

                case "db2":        //待补充,需确认驱动格式
                    factory = new SessionFactory(conn, DatabaseType.Db2);
                    break;

                case "mysql":        //待补充,需确认格式
                    factory = new SessionFactory(conn, DatabaseType.MySql);
                    break;

                case "System.Data.SqlClient":        //sqlserver
                    factory = new SessionFactory(conn, DatabaseType.SqlServer);
                    break;

                default:
                    factory = new SessionFactory(conn, DatabaseType.Oracle);
                    break;
                }
                ;
                //}
                DatabaseSession.Register(name, factory);
            }
        }