//private Dictionary<string, EntityBase> _dicInstance = new Dictionary<string, EntityBase>();//已经实例化的实体 //private IList _baseList; /// <summary> /// 别名映射 /// </summary> /// <param name="table"></param> /// <param name="aliasName"></param> public AliasTableMapping(BQLEntityTableHandle table, TableAliasNameManager belongManager, EntityMappingInfo mappingInfo) { _belongManager = belongManager; _entityInfo = table.GetEntityInfo(); _table = new BQLAliasHandle(table, _belongManager.NextTableAliasName()); _mappingInfo = mappingInfo; InitParam(table); }
/// <summary> /// 添加到库信息 /// </summary> /// <param name="table"></param> internal void AddToDB(BQLEntityTableHandle table) { string key = table.GetEntityInfo().EntityType.FullName; if (!_dicTables.ContainsKey(key)) { _dicTables[key] = table; } }
/// <summary> /// 获取主表的别名信息 /// </summary> /// <param name="table"></param> /// <returns></returns> public BQLAliasHandle GetPrimaryAliasHandle(BQLTableHandle table) { BQLEntityTableHandle eHandle = table as BQLEntityTableHandle; if (Buffalo.Kernel.CommonMethods.IsNull(eHandle)) { return(null); } if (eHandle.GetEntityInfo() == _primaryTable.EntityInfo) { return(_primaryTable.TableInfo); } return(null); }
/// <summary> /// 初始化字段 /// </summary> /// <param name="table"></param> /// <param name="paramIndex"></param> private void InitParam(BQLEntityTableHandle table) { _dicParams = new Dictionary <string, BQLAliasParamHandle>(); foreach (EntityPropertyInfo info in table.GetEntityInfo().PropertyInfo) { string prmAliasName = _belongManager.NextParamAliasName(_table.GetAliasName()); BQLAliasParamHandle prm = BQL.Tables[_table.GetAliasName()][info.ParamName].As(prmAliasName); _dicPropertyInfo[prmAliasName] = info; prm.ValueDbType = info.SqlType; _dicParams[info.PropertyName] = prm; } }
/// <summary> /// 获取真正要显示的属性集合 /// </summary> /// <param name="handle"></param> /// <returns></returns> public List <BQLParamHandle> GetShowProperty(BQLTableHandle table) { List <BQLParamHandle> propertys = new List <BQLParamHandle>(); if (_showProperty != null && _showProperty.Count > 0) { foreach (BQLParamHandle param in _showProperty) { propertys.Add(param); } return(propertys); } BQLEntityTableHandle eTable = table as BQLEntityTableHandle; if (!CommonMethods.IsNull(eTable)) { foreach (EntityPropertyInfo info in eTable.GetEntityInfo().PropertyInfo) { string name = info.PropertyName; bool hidden = false; foreach (BQLParamHandle param in _hideProperty) { BQLEntityParamHandle eph = param as BQLEntityParamHandle; if (!CommonMethods.IsNull(eph)) { if (eph.PInfo.PropertyName == name) { hidden = true; break; } } } if (!hidden) { propertys.Add(eTable[info.PropertyName]); } } return(propertys); } if (!CommonMethods.IsNull(table)) { propertys.Add(table._); } return(propertys); }
/// <summary> /// 查询是否存在符合条件的记录 /// </summary> /// <param name="BQL">sql语句</param> /// <returns></returns> public bool ExistsRecord <E>(ScopeList lstScope) where E : EntityBase, new() { Type eType = typeof(E); BQLEntityTableHandle table = _oper.DBInfo.FindTable(eType); if (CommonMethods.IsNull(table)) { _oper.DBInfo.ThrowNotFondTable(eType); } List <BQLParamHandle> lstParams = new List <BQLParamHandle>(); lstParams.Add(table[table.GetEntityInfo().PrimaryProperty[0].PropertyName]); BQLCondition where = BQLCondition.TrueValue; where = FillCondition(where, table, lstScope); BQLQuery bql = BQL.Select(lstParams.ToArray()) .From(table) .Where(where) .OrderBy(GetSort(lstScope.OrderBy, table)); return(ExistsRecord <E>(bql, lstScope.UseCache)); }
/// <summary> /// 转换排序信息 /// </summary> /// <param name="lstScort"></param> /// <param name="table"></param> /// <returns></returns> protected BQLParamHandle[] GetSort(SortList lstScort, BQLEntityTableHandle table) { return(BQLConditionScope.GetSort(lstScort, table, table.GetEntityInfo())); }
/// <summary> /// 填充信息 /// </summary> /// <param name="condition"></param> /// <param name="table"></param> /// <param name="lstScope"></param> /// <param name="entityType"></param> public BQLCondition FillCondition(BQLCondition condition, BQLEntityTableHandle table, ScopeList lstScope) { return(BQLConditionScope.FillCondition(condition, table, lstScope, table.GetEntityInfo())); }