public List <XPDataObject> GetObjectsFromDataSource() { if (DataSource == null) { throw new InvalidOperationException("DataSource Is null"); } DataSource.Fill(null); XPDictionary xpDictionary = DevExpress.ExpressApp.Xpo.XpoTypesInfoHelper.GetXpoTypeInfoSource().XPDictionary; var newClass = xpDictionary.CreateClass($"NewClass{ID}", new NonPersistentAttribute()); if (ExcelDataSource != null) { foreach (var item in ExcelDataSource.Schema) { newClass.CreateMember(item.Name, Type.GetType(item.Type.ToString())); } } if (SqlDataSource != null) { foreach (var item in SqlDataSource.Result.FirstOrDefault().Columns) { newClass.CreateMember(item.Name, item.Type); } } XafTypesInfo.Instance.RefreshInfo(newClass.ClassType); return(ExcelDataSource != null?GetListFromExcelDataSource(newClass) : GetListFromSqlDatasource(newClass)); }
public XPClassInfo CreateClass(XPDictionary dictionary) { XPClassInfo result = dictionary.QueryClassInfo(AssemblyName, Name); if (result == null) { XPClassInfo baseClassInfo; if (BaseClass != null) { baseClassInfo = BaseClass.CreateClass(dictionary); } else { baseClassInfo = dictionary.GetClassInfo(GetDefaultBaseClass()); } result = dictionary.CreateClass(baseClassInfo, Name); CreateAttributes(result); } return(result); }
public static XPClassInfo AddClass(XPDictionary dict, DBTable table) { if (table.PrimaryKey.Columns.Count > 1) { throw new NotSupportedException("Compound primary keys are not supported"); } XPClassInfo classInfo = dict.CreateClass(dict.GetClassInfo(typeof(BasePersistentClass)), table.Name.Replace('.', '_')); classInfo.AddAttribute(new PersistentAttribute(table.Name)); DBColumnType primaryColumnType = table.GetColumn(table.PrimaryKey.Columns[0]).ColumnType; classInfo.CreateMember(table.PrimaryKey.Columns[0], DBColumn.GetType(primaryColumnType), new KeyAttribute(IsAutoGenerationSupported(primaryColumnType))); foreach (DBColumn col in table.Columns) { if (!col.IsKey && col.ColumnType != DBColumnType.Unknown) { classInfo.CreateMember(col.Name, DBColumn.GetType(col.ColumnType)); } } return(classInfo); }