예제 #1
0
        //----------Members-----------

        #region 连接字符串

#if lang_zh
        /// <summary>
        /// 设置连接字符串
        /// </summary>
        /// <param name="m_connectionString">连接字符串</param>
        /// <param name="m_ConnectionAliasName">连接别名;如果没起别名,默认为DEFAULT,会以此作为默认的连接字符串</param>
#else
        /// <summary>
        /// Set the connection string
        /// </summary>
        /// <param name="m_connectionString">connection string</param>
        /// <param name="m_ConnectionAliasName">the Alias Name of Connection (if not pass name,it will use the DEFAULT name instead.)</param>
#endif
        public static void SetConnection(string m_connectionString, string m_ConnectionAliasName = ALIAS_NAME_DEFAULT)
        {
            //检查连接字符串
            SqlConnectionStringBuilder builder = null;

            try
            {
                builder = new SqlConnectionStringBuilder(m_connectionString);
            }
            catch (Exception ex)
            {
#if lang_zh
                const string errMsg = "连接字符串有错误。";
#else
                const string errMsg = "Connection String is invalid.";
#endif

                throw new ArgumentException(errMsg, "m_connectionString", ex);
            }

            //##异步的

            /* 启用异步SQL支持的时候,连接字符串必须包含以下属性。
             * https://msdn.microsoft.com/zh-cn/library/system.data.sqlclient.sqlconnectionstringbuilder.asynchronousprocessing(v=vs.110).aspx
             *
             * 标记为“允许异步”。即:
             * 1.没有标记时,及时使用Command的Async方法,依然是同步操作;
             * 2.有标记时,如果继续使用Command的同步方法,仍然能用于同步操作。
             */
#if NET_STD
#else
            builder.AsynchronousProcessing = true;
#endif

            string finalConnectionString = builder.ToString();

            //检查连接是否可用,同时获取SqlServer的产品版本号
            string version;
            try
            {
                version = AsyncSQLHelper.ExecuteScalar(finalConnectionString, CommandType.Text, "SELECT SERVERPROPERTY('ProductVersion')") as String;
            }
            catch (Exception ex)
            {
#if lang_zh
                const string errMsg = "此连接字符串无法正常工作。";
#else
                const string errMsg = "This Connection String was unable to work properly.";
#endif
                throw new ArgumentException(errMsg, "m_connectionString", ex);
            }

            //记录结果
            var item = new ConnectionRepositoryItem
            {
                ConnectionString     = finalConnectionString,
                ServerProductVersion = new Version(version)
            };
            ConnectionRepository.SetRepositoryItem(m_ConnectionAliasName, item);
        }
예제 #2
0
        //---------Control----------

        #region 添加资源项

#if lang_zh
        /// <summary>
        /// 添加资源项
        /// </summary>
        /// <param name="ConnectionAliasName">连接别名</param>
        /// <param name="item">资源项</param>
        /// <returns>成功与否</returns>
#else
        /// <summary>
        /// Set the target Item
        /// </summary>
        /// <param name="ConnectionAliasName">the Alias Name of Connection</param>
        /// <param name="item">the item</param>
        /// <returns>successfully or not</returns>
#endif
        internal static bool SetRepositoryItem(string ConnectionAliasName, ConnectionRepositoryItem item)
        {
            //检查
            if (item == null)
            {
                return(false);
            }

            //设置值
            repository[ConnectionAliasName] = item;
            return(true);
        }