/// <summary> /// 获取该类的对应关联表名 /// </summary> /// <param name="type">类名</param> /// <returns></returns> public string GetTableName(Type type) { DataEntityMapping mapping = DataMapping.GetEntityMapping(type); if (mapping != null) { return(mapping.TableName); } else { return(null); } }
/// <summary> /// 设置数据类型的别名 /// </summary> /// <typeparam name="T">数据类型</typeparam> /// <param name="tableName">别名</param> public void Set <T> (string tableName) where T : class, new() { if (string.IsNullOrEmpty(tableName)) { throw new ArgumentNullException("tableName"); } Type type = typeof(T); DataEntityMapping mapping = null; if (_aliaslist.ContainsKey(type)) { mapping = _aliaslist [type]; } else { mapping = DataMapping.GetEntityMapping(type); _aliaslist [type] = mapping; } mapping.SetAliasName(tableName); }
/// <summary> /// 读取关联数据 /// </summary> /// <param name="keyName">关联字段属性名称</param> /// <param name="extendQuery">扩展查询</param> /// <param name="extendOrder">扩展排序</param> /// <returns>关联数据</returns> private object LoadRelationData(string keyName, QueryExpression extendQuery, OrderExpression extendOrder) { DataEntityMapping selfMapping = DataMapping.GetEntityMapping(this.GetType()); RelationFieldMapping relationMapping = selfMapping.FindRelateionMapping(keyName); QueryExpression expression = null; foreach (RelationFieldMapping.RelationKeyValue rt in relationMapping.GetRelationKeyValues()) { DataFieldInfo info = new DataFieldInfo(relationMapping.RelateTableMapping.ObjectType, rt.RelateField.Name); object objkey = rt.MasterField.Handler.Get(this); if (Object.Equals(objkey, null)) { expression &= info.IsNull(); } else { expression &= info == objkey; } } if (extendQuery != null) { expression = QueryExpression.And(expression, extendQuery); } //判断与关联表的关联关系 if (relationMapping.Kind == RelationFieldMapping.RelationKind.OneToOne) { //一对一关系,直接查询单个对象 object obj = this.Context.SelectSingle(relationMapping.RelateTableMapping, expression, extendOrder, 0, SafeLevel.None); DataEntity de = obj as DataEntity; if (de == null) { return(obj); } if (relationMapping.RelateRelationMapping != null) //判断是否相互关联 { if (relationMapping.RelateRelationMapping.Kind == RelationFieldMapping.RelationKind.OneToOne) { de.TempRelationDatas.Add(relationMapping.RelateRelationMapping.RelationName, this); } } return(de); } else { IList list = this.Context.QueryDataList(relationMapping.RelateTableMapping, expression, extendOrder, null, SafeLevel.Default) as IList; //if (list.Count == 0) return list; if (relationMapping.RelateRelationMapping != null && relationMapping.RelateRelationMapping.MasterTableMapping.IsDataEntity) { if (relationMapping.RelateRelationMapping.Kind == RelationFieldMapping.RelationKind.OneToOne) { foreach (object obj in list) { DataEntity de = obj as DataEntity; de.TempRelationDatas.Add(relationMapping.RelateRelationMapping.RelationName, this); } } } if (relationMapping.ResultDataKind == RelationFieldMapping.DataKind.IList) { return(list); } else { Array array = Array.CreateInstance(relationMapping.RelateTableMapping.ObjectType, list.Count); list.CopyTo(array, 0); return(array); } } }
internal AggregateTable(DataContext dataContext) { _context = dataContext; _enetityMapping = DataMapping.GetEntityMapping(typeof(T)); }
internal LEnumerable(DataContext dataContext) { _context = dataContext; _mapping = DataMapping.GetEntityMapping(typeof(T)); }