public IPersistentClassInfo Create(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) { var persistentClassInfo = CreateCore(table, persistentAssemblyInfo,mapperInfo); foreach (ForeignKey foreignKey in table.ForeignKeys) { CreateCore(_database.Tables[foreignKey.ReferencedTable], persistentAssemblyInfo, mapperInfo); } return persistentClassInfo; }
private IPersistentClassInfo CreateCore(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) { int count = table.Columns.OfType<Column>().Where(column => column.InPrimaryKey).Count(); IPersistentClassInfo persistentClassInfo = CreatePersistentClassInfo(table.Name, TemplateType.Class, persistentAssemblyInfo); persistentClassInfo.BaseType = typeof(XPLiteObject); if (count > 1) CreatePersistentClassInfo(table.Name + KeyStruct, TemplateType.Struct, persistentAssemblyInfo); _extraInfoBuilder.CreateExtraInfos(table, persistentClassInfo, mapperInfo); if (count == 0) Tracing.Tracer.LogError("No primary keys found for " + table.Name); return persistentClassInfo; }
public void CreateExtraInfos(Table table, IPersistentClassInfo persistentClassInfo, IMapperInfo mapperInfo) { var persistentAttributeInfos = _attributeMapper.Create(table, persistentClassInfo, mapperInfo); foreach (var persistentAttributeInfo in persistentAttributeInfos) { persistentClassInfo.TypeAttributes.Add(persistentAttributeInfo); } var count = table.Columns.OfType<Column>().Where(column => column.InPrimaryKey).Count(); if (count > 0) { var templateInfo = (ITemplateInfo) _objectSpace.CreateObject(WCTypesInfo.Instance.FindBussinessObjectType(typeof (ITemplateInfo))); templateInfo.Name = SupportPersistentObjectsAsAPartOfACompositeKey; persistentClassInfo.TemplateInfos.Add(templateInfo); } }
public void Map(Database database, IMapperInfo mapperInfo) { var attributeMapper = new AttributeMapper(_objectSpace); var tableMapper = new TableMapper(_objectSpace, database, attributeMapper); var dataTypeMapper = new DataTypeMapper(); var columnMapper = new ColumnMapper(dataTypeMapper, attributeMapper); Tracing.Tracer.LogSeparator("DBMapper Start mapping database " + database.Name); foreach (Table table in database.Tables.OfType<Table>().Where(table => !(table.IsSystemObject))) { Tracing.Tracer.LogValue("Table", table.Name); IPersistentClassInfo persistentClassInfo = tableMapper.Create(table, _persistentAssemblyInfo, mapperInfo); foreach (Column column in table.Columns) { columnMapper.Create(column, persistentClassInfo); } } _dataStoreLogonObject = (IDataStoreLogonObject)ReflectionHelper.CreateObject(XafTypesInfo.Instance.FindBussinessObjectType<IDataStoreLogonObject>(), new object[] { _persistentAssemblyInfo.Session, _dataStoreLogonObject }); attributeMapper.Create(_persistentAssemblyInfo, _dataStoreLogonObject); Func<ITemplateInfo, bool> templateInfoPredicate = info => info.Name == ExtraInfoBuilder.SupportPersistentObjectsAsAPartOfACompositeKey; CodeEngine.SupportCompositeKeyPersistentObjects(_persistentAssemblyInfo, templateInfoPredicate); }
public void Map(Database database, IMapperInfo mapperInfo) { var attributeMapper = new AttributeMapper(_objectSpace); var tableMapper = new TableMapper(_objectSpace, database, attributeMapper); var dataTypeMapper = new DataTypeMapper(); var columnMapper = new ColumnMapper(dataTypeMapper, attributeMapper); Tracing.Tracer.LogSeparator("DBMapper Start mapping database " + database.Name); foreach (Table table in database.Tables.OfType <Table>().Where(table => !(table.IsSystemObject))) { Tracing.Tracer.LogValue("Table", table.Name); IPersistentClassInfo persistentClassInfo = tableMapper.Create(table, _persistentAssemblyInfo, mapperInfo); foreach (Column column in table.Columns) { columnMapper.Create(column, persistentClassInfo); } } _dataStoreLogonObject = (IDataStoreLogonObject)XafTypesInfo.Instance.FindBussinessObjectType <IDataStoreLogonObject>().CreateInstance(new object[] { _persistentAssemblyInfo.Session, _dataStoreLogonObject }); attributeMapper.Create(_persistentAssemblyInfo, _dataStoreLogonObject); Func <ITemplateInfo, bool> templateInfoPredicate = info => info.Name == ExtraInfoBuilder.SupportPersistentObjectsAsAPartOfACompositeKey; CodeEngine.SupportCompositeKeyPersistentObjects(_persistentAssemblyInfo, templateInfoPredicate); }
private IPersistentClassInfo CreateCore(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) { int count = table.Columns.OfType <Column>().Where(column => column.InPrimaryKey).Count(); IPersistentClassInfo persistentClassInfo = CreatePersistentClassInfo(table.Name, TemplateType.Class, persistentAssemblyInfo); persistentClassInfo.BaseType = typeof(XPLiteObject); if (count > 1) { CreatePersistentClassInfo(table.Name + KeyStruct, TemplateType.Struct, persistentAssemblyInfo); } _extraInfoBuilder.CreateExtraInfos(table, persistentClassInfo, mapperInfo); if (count == 0) { Tracing.Tracer.LogError("No primary keys found for " + table.Name); } return(persistentClassInfo); }
public IPersistentClassInfo Create(Table table, IPersistentAssemblyInfo persistentAssemblyInfo, IMapperInfo mapperInfo) { var persistentClassInfo = CreateCore(table, persistentAssemblyInfo, mapperInfo); foreach (ForeignKey foreignKey in table.ForeignKeys) { CreateCore(_database.GetTable(foreignKey.ReferencedTable, foreignKey.ReferencedTableSchema), persistentAssemblyInfo, mapperInfo); } return(persistentClassInfo); }
public void CreateExtraInfos(Table table, IPersistentClassInfo persistentClassInfo, IMapperInfo mapperInfo) { var persistentAttributeInfos = _attributeMapper.Create(table, persistentClassInfo, mapperInfo); foreach (var persistentAttributeInfo in persistentAttributeInfos) { persistentClassInfo.TypeAttributes.Add(persistentAttributeInfo); } var count = table.Columns.OfType <Column>().Count(column => column.InPrimaryKey); if (count > 0) { if (persistentClassInfo.TemplateInfos.FirstOrDefault(info => info.Name == SupportPersistentObjectsAsAPartOfACompositeKey) == null) { var templateInfo = (ITemplateInfo)_objectSpace.CreateObject(WCTypesInfo.Instance.FindBussinessObjectType(typeof(ITemplateInfo))); templateInfo.Name = SupportPersistentObjectsAsAPartOfACompositeKey; persistentClassInfo.TemplateInfos.Add(templateInfo); } } }
public List <IPersistentAttributeInfo> Create(Table table, IPersistentClassInfo owner, IMapperInfo mapperInfo) { var persistentAttributeInfos = new List <IPersistentAttributeInfo>(); if (owner.TypeAttributes.OfType <IPersistentPersistentAttribute>().FirstOrDefault() == null) { persistentAttributeInfos.Add(GetPersistentPersistentAttribute(table.Name)); } if (!(string.IsNullOrEmpty(mapperInfo.NavigationPath)) && owner.TypeAttributes.OfType <IPersistentNavigationItemAttribute>().FirstOrDefault() == null) { var persistentNavigationItemAttribute = ObjectSpace.CreateWCObject <IPersistentNavigationItemAttribute>(); var cleanName = owner.Name.CleanCodeName(); persistentNavigationItemAttribute.Path = mapperInfo.NavigationPath + "/" + cleanName; persistentNavigationItemAttribute.ViewId = cleanName + "_ListView"; persistentAttributeInfos.Add(persistentNavigationItemAttribute); } return(persistentAttributeInfos); }
public List<IPersistentAttributeInfo> Create(Table table, IPersistentClassInfo owner, IMapperInfo mapperInfo) { var persistentAttributeInfos = new List<IPersistentAttributeInfo>(); if (owner.TypeAttributes.OfType<IPersistentPersistentAttribute>().FirstOrDefault() == null) persistentAttributeInfos.Add(GetPersistentPersistentAttribute(table.Name)); if (!(string.IsNullOrEmpty(mapperInfo.NavigationPath)) && owner.TypeAttributes.OfType<IPersistentNavigationItemAttribute>().FirstOrDefault() == null) { var persistentNavigationItemAttribute = ObjectSpace.CreateWCObject<IPersistentNavigationItemAttribute>(); var cleanName = owner.Name.CleanCodeName(); persistentNavigationItemAttribute.Path = mapperInfo.NavigationPath + "/" + cleanName; persistentNavigationItemAttribute.ViewId = cleanName + "_ListView"; persistentAttributeInfos.Add(persistentNavigationItemAttribute); } return persistentAttributeInfos; }