public List <TableEntity> GetRemainTable(IList <TableEntity> datasource , string ConnectionName, string DbName) { var config = ConfigureModel.Find(ConnectionName); using (DbContext db = new DbContext(config)) { var exists = datasource.Select(s => s.Object_id); var _tables = db.GetTables().Where(p => !exists.Contains(p.Object_id)) .OrderBy(P => P.Table_Name).ToList(); if (_tables.Count > 0) { var _columns = db.GetColumns(_tables.Select(p => p.Table_Name).ToArray()); foreach (var item in _tables) { item.Object_id = _columns.First().Object_id; var columns = _columns.Where(p => p.Table == item.Table_Name); item.Columns = new BindingList <ColumnEntity>( columns.ToList()); } return(_tables); } return(null); } }
public static IEnumerable <ConnectionEntity> GetDefaultConnectionList() { if (Connections == null) { ConfigureModel model = new ConfigureModel(); Connections = model.GetConnectionList(Configure.DEFAULT_CONNECTION_CONFIG_NAME).ToList(); } return(Connections); }
public static ConnectionEntity Find(string ConnectionName, string FilePath = "") { if (string.IsNullOrEmpty(FilePath)) { return(GetDefaultConnectionList().FirstOrDefault(p => p.ConnectionName == ConnectionName)); } else { ConfigureModel model = new ConfigureModel(); return(model.GetConnectionList(FilePath).FirstOrDefault(p => p.ConnectionName == ConnectionName)); } }
public void SyncExistsTable(ProjectEntity project, Func <Delegate, object> WinUIthread) { var _config = ConfigureModel.Find(project.ConnectionName); using (DbContext db = new DbContext(_config)) { var _objectid = project.Tables.Select(t => t.Object_id); var _tablename = project.Tables.Select(t => t.Table_Name); this.OnNotify("Get table data...."); var tables = db.GetTables().Where(p => _objectid.Contains(p.Object_id) || _tablename.Contains(p.Table_Name)); this.OnNotify("Get column data...."); List <ColumnEntity> columns = db.GetColumns(Object_id: project.Tables.Select(t => t.Object_id).ToArray()); this.OnNotify("Begin remove table...."); //remove table var removetables = project.Tables.Select(p => p.Object_id).ToList().Except( tables.Select(p => p.Object_id).ToList() ); for (int i = 0; i < project.Tables.Count; i++) { if (removetables.Contains(project.Tables[i].Object_id)) { WinUIthread.Invoke(new Action(() => { project.Tables.RemoveAt(i); })); } } this.OnNotify("Begin modify table ...."); foreach (var item in project.Tables) { this.OnNotify("Sync " + item.Table_Name); this.ModifiyTableSchema(columns, item, WinUIthread, iswithoutdesc: true); } this.OnNotify("Complete."); } }