private ComponentDbConnectStringSelectionElement GetElementForComponent(IComponent component, string appname)
        {
            ComponentDbConnectStringSelectionElement select = null;
            AppComponentDatabaseAdptorConfiguration  appdbs = ConfigurationManager.GetSection(AppComponentDbSettingSectionName) as AppComponentDatabaseAdptorConfiguration;

            if (appdbs != null)
            {
                select = appdbs.DefaultAppConnectString;
                if (appdbs.Dbs != null)
                {
                    foreach (var item in appdbs.Dbs)
                    {
                        AppComponentDatabaseAdptor adptor = item as AppComponentDatabaseAdptor;
                        //adptor.AppName==空(表示所有app都可用)或adptor.AppName==appname
                        if ((string.IsNullOrEmpty(adptor.AppName) || string.Equals(adptor.AppName, appname, StringComparison.OrdinalIgnoreCase)) &&
                            adptor.ComponentDatabaeAdptors != null)
                        {
                            foreach (var item2 in adptor.ComponentDatabaeAdptors)
                            {
                                ComponentDbConnectStringSelectionElement db = item2 as ComponentDbConnectStringSelectionElement;
                                if (string.IsNullOrEmpty(db.ComponentId))
                                {
                                    select = db;
                                }
                                else
                                {
                                    if (string.Equals(db.ComponentId, component.ComponentId, StringComparison.OrdinalIgnoreCase))
                                    {
                                        if (string.IsNullOrEmpty(adptor.AppName))
                                        {
                                            select = db;
                                        }
                                        else
                                        {
                                            return(db); //app名称相同且组件id相同
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
            return(select);
        }
        /// <summary>
        /// 给指定的组件获取数据库连接串
        /// </summary>
        /// <param name="component"></param>
        /// <param name="appname"></param>
        /// <param name="ismaster"></param>
        /// <param name="dbType"></param>
        /// <returns></returns>
        protected virtual string GetConnectStringForComponent(IComponent component, string appname, bool ismaster, out string dbType)
        {
            dbType = null;
            ComponentDbConnectStringSelectionElement a = GetElementForComponent(component, appname);

            if (a != null)
            {
                dbType = a.DabaseType;
                string str = a.ConnectString;
                if (ismaster)
                {
                    str = a.MasterConnectString;
                }
                if (!string.IsNullOrEmpty(str))
                {
                    return(DecryptConnectionString(str));
                }
            }
            return(null);
        }