internal void FromPivotCacheDefinition(PivotCacheDefinition pcd) { SetAllNull(); if (pcd.Id != null) { Id = pcd.Id.Value; } if (pcd.Invalid != null) { Invalid = pcd.Invalid.Value; } if (pcd.SaveData != null) { SaveData = pcd.SaveData.Value; } if (pcd.RefreshOnLoad != null) { RefreshOnLoad = pcd.RefreshOnLoad.Value; } if (pcd.OptimizeMemory != null) { OptimizeMemory = pcd.OptimizeMemory.Value; } if (pcd.EnableRefresh != null) { EnableRefresh = pcd.EnableRefresh.Value; } if (pcd.RefreshedBy != null) { RefreshedBy = pcd.RefreshedBy.Value; } if (pcd.RefreshedDate != null) { RefreshedDate = pcd.RefreshedDate.Value; } if (pcd.BackgroundQuery != null) { BackgroundQuery = pcd.BackgroundQuery.Value; } if (pcd.MissingItemsLimit != null) { MissingItemsLimit = pcd.MissingItemsLimit.Value; } if (pcd.CreatedVersion != null) { CreatedVersion = pcd.CreatedVersion.Value; } if (pcd.RefreshedVersion != null) { RefreshedVersion = pcd.RefreshedVersion.Value; } if (pcd.MinRefreshableVersion != null) { MinRefreshableVersion = pcd.MinRefreshableVersion.Value; } if (pcd.RecordCount != null) { RecordCount = pcd.RecordCount.Value; } if (pcd.UpgradeOnRefresh != null) { UpgradeOnRefresh = pcd.UpgradeOnRefresh.Value; } if (pcd.IsTupleCache != null) { IsTupleCache = pcd.IsTupleCache.Value; } if (pcd.SupportSubquery != null) { SupportSubquery = pcd.SupportSubquery.Value; } if (pcd.SupportAdvancedDrill != null) { SupportAdvancedDrill = pcd.SupportAdvancedDrill.Value; } if (pcd.CacheSource != null) { CacheSource.FromCacheSource(pcd.CacheSource); } // doing one by one because it's bloody hindering awkward complicated. if (pcd.CacheFields != null) { SLCacheField cf; using (var oxr = OpenXmlReader.Create(pcd.CacheFields)) { while (oxr.Read()) { if (oxr.ElementType == typeof(CacheField)) { cf = new SLCacheField(); cf.FromCacheField((CacheField)oxr.LoadCurrentElement()); CacheFields.Add(cf); } } } } if (pcd.CacheHierarchies != null) { SLCacheHierarchy ch; using (var oxr = OpenXmlReader.Create(pcd.CacheHierarchies)) { while (oxr.Read()) { if (oxr.ElementType == typeof(CacheHierarchy)) { ch = new SLCacheHierarchy(); ch.FromCacheHierarchy((CacheHierarchy)oxr.LoadCurrentElement()); CacheHierarchies.Add(ch); } } } } if (pcd.Kpis != null) { SLKpi k; using (var oxr = OpenXmlReader.Create(pcd.Kpis)) { while (oxr.Read()) { if (oxr.ElementType == typeof(Kpi)) { k = new SLKpi(); k.FromKpi((Kpi)oxr.LoadCurrentElement()); Kpis.Add(k); } } } } if (pcd.TupleCache != null) { TupleCache.FromTupleCache(pcd.TupleCache); HasTupleCache = true; } if (pcd.CalculatedItems != null) { SLCalculatedItem ci; using (var oxr = OpenXmlReader.Create(pcd.CalculatedItems)) { while (oxr.Read()) { if (oxr.ElementType == typeof(CalculatedItem)) { ci = new SLCalculatedItem(); ci.FromCalculatedItem((CalculatedItem)oxr.LoadCurrentElement()); CalculatedItems.Add(ci); } } } } if (pcd.CalculatedMembers != null) { SLCalculatedMember cm; using (var oxr = OpenXmlReader.Create(pcd.CalculatedMembers)) { while (oxr.Read()) { if (oxr.ElementType == typeof(CalculatedMember)) { cm = new SLCalculatedMember(); cm.FromCalculatedMember((CalculatedMember)oxr.LoadCurrentElement()); CalculatedMembers.Add(cm); } } } } if (pcd.Dimensions != null) { SLDimension d; using (var oxr = OpenXmlReader.Create(pcd.Dimensions)) { while (oxr.Read()) { if (oxr.ElementType == typeof(Dimension)) { d = new SLDimension(); d.FromDimension((Dimension)oxr.LoadCurrentElement()); Dimensions.Add(d); } } } } if (pcd.MeasureGroups != null) { SLMeasureGroup mg; using (var oxr = OpenXmlReader.Create(pcd.MeasureGroups)) { while (oxr.Read()) { if (oxr.ElementType == typeof(MeasureGroup)) { mg = new SLMeasureGroup(); mg.FromMeasureGroup((MeasureGroup)oxr.LoadCurrentElement()); MeasureGroups.Add(mg); } } } } if (pcd.Maps != null) { SLMeasureDimensionMap mdm; using (var oxr = OpenXmlReader.Create(pcd.Maps)) { while (oxr.Read()) { if (oxr.ElementType == typeof(MeasureDimensionMap)) { mdm = new SLMeasureDimensionMap(); mdm.FromMeasureDimensionMap((MeasureDimensionMap)oxr.LoadCurrentElement()); Maps.Add(mdm); } } } } }
void Init(MappingSchema mappingSchema) { var ta = mappingSchema.GetAttribute <TableAttribute>(TypeAccessor.Type, a => a.Configuration); if (ta != null) { TableName = ta.Name; SchemaName = ta.Schema; DatabaseName = ta.Database; IsColumnAttributeRequired = ta.IsColumnAttributeRequired; } if (TableName == null) { TableName = TypeAccessor.Type.Name; if (TypeAccessor.Type.IsInterfaceEx() && TableName.Length > 1 && TableName[0] == 'I') { TableName = TableName.Substring(1); } } var attrs = new List <ColumnAttribute>(); var members = TypeAccessor.Members.Concat( mappingSchema.GetDynamicColumns(ObjectType).Select(dc => new MemberAccessor(TypeAccessor, dc))); foreach (var member in members) { var aa = mappingSchema.GetAttribute <AssociationAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration); if (aa != null) { Associations.Add(new AssociationDescriptor( TypeAccessor.Type, member.MemberInfo, aa.GetThisKeys(), aa.GetOtherKeys(), aa.ExpressionPredicate, aa.Predicate, aa.Storage, aa.CanBeNull)); continue; } var ca = mappingSchema.GetAttribute <ColumnAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration); if (ca != null) { if (ca.IsColumn) { if (ca.MemberName != null) { attrs.Add(new ColumnAttribute(member.Name, ca)); } else { var cd = new ColumnDescriptor(mappingSchema, ca, member); Columns.Add(cd); _columnNames.Add(member.Name, cd); } } } else if ( !IsColumnAttributeRequired && mappingSchema.IsScalarType(member.Type) || mappingSchema.GetAttribute <IdentityAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration) != null || mappingSchema.GetAttribute <PrimaryKeyAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration) != null) { var cd = new ColumnDescriptor(mappingSchema, new ColumnAttribute(), member); Columns.Add(cd); _columnNames.Add(member.Name, cd); } else { var caa = mappingSchema.GetAttribute <ColumnAliasAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration); if (caa != null) { if (Aliases == null) { Aliases = new Dictionary <string, string>(); } Aliases.Add(member.Name, caa.MemberName); } } var ma = mappingSchema.GetAttribute <ExpressionMethodAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration); if (ma != null && ma.IsColumn) { if (CalculatedMembers == null) { CalculatedMembers = new List <MemberAccessor>(); } CalculatedMembers.Add(member); } // dynamic columns store property var dcsProp = mappingSchema.GetAttribute <DynamicColumnsStoreAttribute>(TypeAccessor.Type, member.MemberInfo, attr => attr.Configuration); if (dcsProp != null) { DynamicColumnsStore = new ColumnDescriptor(mappingSchema, new ColumnAttribute(member.Name), member); } } var typeColumnAttrs = mappingSchema.GetAttributes <ColumnAttribute>(TypeAccessor.Type, a => a.Configuration); foreach (var attr in typeColumnAttrs.Concat(attrs)) { if (attr.IsColumn) { SetColumn(attr, mappingSchema); } } }