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); }