public static List <T> LoadMany <T>(this DirectDatabaseBase db, string whereCommand = "") { T temp = (T)Activator.CreateInstance(typeof(T)); DirectModel model = temp as DirectModel; if (model == null) { throw new Exception("Cast error"); } string command = string.Format("SELECT * FROM {0}.{1}.{2}{3}", db.DatabaseName, db.DatabaseScheme, model.GetTableName(), (!string.IsNullOrEmpty(whereCommand) ? " WHERE " + whereCommand : "")); DirectContainer dc = db.LoadContainer(command); return(dc.ConvertList <T>()); }
private void RunInserter() { if (this._queryInserter.Count == 0 && this._queryLoader.Count == 0) { return; } string mainQuery = "START TRANSACTION;"; string finalSelect = "SELECT "; List <string> variables = new List <string>(); List <DirectModel> modelsToWorkWith = new List <DirectModel>(); lock (_queryLoaderLockObj) { // Loaders foreach (var umodel in this._queryLoader) { string variable_name = string.Format("{0}_{1}", umodel.Key.IdName, umodel.Key.InternalID); mainQuery += umodel.Key.GetDatabase().ConstructVariable(variable_name) + string.Format("({0});", umodel.Value) + Environment.NewLine; variables.Add(variable_name); finalSelect += (finalSelect.Equals("SELECT ") ? "" : ",") + string.Format("@{0} AS '{0}'", variable_name); modelsToWorkWith.Add(umodel.Key); } this._queryLoader = new Dictionary <DirectModel, string>(); } lock (_queryInserterLockObj) { // Inserters foreach (var model in this._queryInserter) { string variable_name = string.Format("{0}_{1}", model.IdName, model.InternalID); mainQuery += model.ConstructInsertQuery(variables) + Environment.NewLine; mainQuery += model.GetDatabase().ConstructVariable(variable_name) + string.Format("(SELECT {0});", model.GetDatabase().QueryScopeID) + Environment.NewLine; variables.Add(variable_name); finalSelect += (finalSelect.Equals("SELECT ") ? "" : ",") + string.Format("@{0} AS '{0}'", variable_name); modelsToWorkWith.Add(model); } this._queryInserter = new List <DirectModel>(); } DateTime dccounter = DateTime.Now; DirectContainer dc = this._database.LoadContainer(mainQuery + "COMMIT;" + finalSelect); double miliseonds = (DateTime.Now - dccounter).TotalMilliseconds; dccounter = DateTime.Now; foreach (string columnname in dc.ColumnNames) { // We split variable because format is (variableName_modelKey) string[] variableSplit = columnname.Split('_'); string parameterName = variableSplit[0]; string chidrenID = variableSplit[1]; int?id = dc.GetInt(columnname); foreach (var model in modelsToWorkWith) { model.CastProperty(parameterName, id.ToString(), chidrenID); } } double miliseonds1 = (DateTime.Now - dccounter).TotalMilliseconds; int a = 0; }
public abstract void BulkCopy(DirectContainer table, string tableName);