public static IItemsProvider <T> GetVirtualProvider <T>(this TableInfo tableInfo) where T : class, IFreeDocument { var enumable = tableInfo.Connector as IEnumerableProvider <T>; IItemsProvider <T> vir = null; if (enumable != null && enumable.CanSkip(tableInfo.Name) == false) { vir = new EnumableVirtualProvider <T>( enumable.GetEnumerable(tableInfo.Name), tableInfo.Size); } else { vir = new DataBaseVirtualProvider <T>(tableInfo.Connector, tableInfo.Name); } return(vir); }
public DataCollection ReadCollection(IDataBaseConnector connector, string tableName, bool isVirtual) { if (isVirtual) { IItemsProvider <IFreeDocument> vir = null; TableInfo tableInfo = connector.RefreshTableNames().FirstOrDefault(d => d.Name == tableName); var enumable = connector as IEnumerableProvider <IFreeDocument>; if (enumable != null && enumable.CanSkip(tableInfo.Name) == false) { vir = new EnumableVirtualProvider <IFreeDocument>( enumable.GetEnumerable(tableInfo.Name), tableInfo.Size); } else { vir = new DataBaseVirtualProvider <IFreeDocument>(tableInfo.Connector, tableInfo.Name); } int count = 1000; if (connector.TypeName == "网页爬虫连接器") { count = 100; } var col = new VirtualDataCollection(vir, count) { Name = tableInfo.Name }; AddDataCollection(col); return(col); } else { Task <List <IFreeDocument> > datas = GetDataFromDB(connector, tableName, true); DataCollection col = AddDataCollection(datas.Result); return(col); } }
public DataCollection ReadCollection(IDataBaseConnector connector, string tableName, bool isVirtual) { if (isVirtual) { IItemsProvider<IFreeDocument> vir = null; TableInfo tableInfo = connector.RefreshTableNames().FirstOrDefault(d => d.Name == tableName); var enumable = connector as IEnumerableProvider<IFreeDocument>; if (enumable != null && enumable.CanSkip(tableInfo.Name) == false) { vir = new EnumableVirtualProvider<IFreeDocument>( enumable.GetEnumerable(tableInfo.Name), tableInfo.Size); } else { vir = new DataBaseVirtualProvider<IFreeDocument>(tableInfo.Connector, tableInfo.Name); } int count = 1000; if (connector.TypeName == "网页爬虫连接器") count = 100; var col = new VirtualDataCollection( vir, count) { Name = tableInfo.Name }; AddDataCollection(col); return col; } else { Task<List<IFreeDocument>> datas = GetDataFromDB(connector, tableName, true); DataCollection col = AddDataCollection(datas.Result); return col; } }