private void SetupUpdateDeleteStatement(ModificationStatement statement, object obj, DataStoreMapping mapping, string alias) { statement.Condition = new BinaryOperator( new QueryOperand(GetKeyColumn(mapping), alias), new OperandValue(mapping.GetKey(obj)), BinaryOperatorType.Equal); }
void ModifyData(ModificationStatement stm, List<ParameterValue> modificationResultIdentities) { string key = _dataStoreManager.GetKey(stm.TableName); ModificationResult modificationResult = _dataStoreManager.SimpleDataLayers[key].ModifyData(stm); if (modificationResult != null) { modificationResultIdentities.AddRange(modificationResult.Identities); } }
void ModifyXPObjectTypeData(ModificationStatement modificationStatement, List<ParameterValue> modificationResultIdentities) { var insertStatement = (InsertStatement)modificationStatement; foreach (var parameterValues in _dataStoreManager.SimpleDataLayers.Select(pair => pair.Value).Select(dataLayer => ModifyXPObjectTypeDataCore(dataLayer, insertStatement)).Where(values => values != null)) { modificationResultIdentities.AddRange(parameterValues); } }
void ModifyXPObjectTypeData(ModificationStatement stm, List<ParameterValue> modificationResultIdentities) { var stm1 = stm; foreach (var parameterValues in _dataStoreManager.SimpleDataLayers.Select(pair => pair.Value).Select(dataLayer => dataLayer.ModifyData(stm1).Identities)) { modificationResultIdentities.AddRange(parameterValues); } }
ModificationResult ModifyXPObjectTable(ModificationStatement[] dmlStatements, InsertStatement insertStatement, ModificationResult modificationResult) { foreach (var simpleDataLayer in _dataStoreManager.SimpleDataLayers) { var dataLayer = simpleDataLayer.Value; if (!TypeExists(dataLayer, insertStatement)) { if (!IsMainLayer(dataLayer.Connection)) { _xpoObjectHacker.CreateObjectTypeIndetifier(insertStatement, _dataStoreManager.SimpleDataLayers[DataStoreManager.StrDefault]); } var modifyData = dataLayer.ModifyData(dmlStatements); if (modifyData.Identities.Count() > 0) modificationResult = modifyData; } } return modificationResult; }
private void SetupInsertUpdateStatement(ModificationStatement statement, object obj, DataStoreMapping mapping) { var values = new object[mapping.Table.Columns.Count]; mapping.Save(obj, values); for (int i = 0; i < values.Length; i++) { var column = mapping.Table.Columns[i]; if (!column.IsIdentity) { statement.Operands.Add(new QueryOperand(column, null)); statement.Parameters.Add(new OperandValue(values[i])); } } }
ModificationResult ModifyXPObjectTable(ModificationStatement[] dmlStatements, InsertStatement insertStatement, ModificationResult modificationResult) { foreach (var simpleDataLayer in _dataStoreManager.GetDataLayers(DataStore)) { if (!simpleDataLayer.Value.IsLegacy) { var dataLayer = simpleDataLayer.Value; if (!TypeExists(dataLayer, insertStatement)) { if (!dataLayer.IsMainLayer) { _xpoObjectHacker.CreateObjectTypeIndetifier(insertStatement, _dataStoreManager.GetDataLayer(DataStoreManager.StrDefault,DataStore)); } var modifyData = dataLayer.ModifyData(dmlStatements); if (modifyData.Identities.Any()) modificationResult = modifyData; } } } return modificationResult; }
public void ModifyData(ModificationStatement[] statements) { if (_tablesDictionary.Count > 0) { InsertData(statements.OfType<InsertStatement>().ToList()); UpdateData(statements.OfType<UpdateStatement>()); } }
/// <summary> /// Модификация записей по указанному выражению /// </summary> /// <param name="root">Выражение на модификацию записей</param> /// <param name="identities">Держатель одинаковых идентификаторов</param> /// <returns>Результат модификации</returns> /// <todo>Пакетное добавление данных (batch insert)</todo> protected virtual ParameterValue ModifyRecords(ModificationStatement root, TaggedParametersHolder identities) { // Кастомизированная модификация DBTableEx table = XPDictionaryInformer.TranslateAndGet(root.TableName); if (table.IsCustom) { ParameterValue result = null; if (root is InsertStatement) result = table.CustomPersistent.Insert(this, (InsertStatement)root); if (root is UpdateStatement) table.CustomPersistent.Update(this, (UpdateStatement)root); if (root is DeleteStatement) table.CustomPersistent.Delete(this, (DeleteStatement)root); return result; } // Обычная модификация Dictionary<OperandValue, string> parameters = new Dictionary<OperandValue, string>(); Query query = new OracleSecuredModifySqlGenerator(this, identities, parameters).GenerateSql(table, root); ParameterValue id = root is InsertStatement ? ((InsertStatement)root).IdentityParameter : null; ExecuteBlock(query, id); return id; }
public DataStoreModifyDataEventArgs(ModificationStatement[] dmlStatements) { ModificationStatements = dmlStatements; }
public void ModifyData(ModificationStatement[] statements) { InsertData(statements.OfType<InsertStatement>()); UpdateData(statements.OfType<UpdateStatement>()); }